import axios from "axios"; export class ApiClient { readonly url = "http://localhost:3000/api"; async get(path: string, params?: URLSearchParams, headers?: object) { const request_url = `${ this.url }${ path }`; const response = await this.makeGetRequest(request_url, headers); return response; } async post(path: string, data: FormData, headers?: object) { const request_url = `${ this.url }${ path }`; const response = await axios.post(request_url, data, headers); return response; } async getProduct(id: string) { const request_url = `${ this.url }/products/${ id }`; const [product_response, product_reviews] = await Promise.all([ this.makeGetRequest(request_url), this.makeGetRequest(`${ request_url }/reviews`) ]); return [product_response, product_reviews]; } private async makeGetRequest(request_url: string, headers?: object) { try { const response = await axios.get(request_url, headers); return response } catch(error) { return error; } } }