You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.js 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import axios from 'axios';
  2. import queryString from 'qs';
  3. const request = axios.create({
  4. baseURL: process.env.REACT_APP_BASE_API_URL,
  5. headers: {
  6. 'Content-Type': 'application/json',
  7. },
  8. paramsSerializer: (params) =>
  9. queryString.stringify(params, { arrayFormat: 'comma' }),
  10. });
  11. export const getRequest = (url, params = null, options = null) =>
  12. request.get(url, { params, ...options });
  13. export const postRequest = (url, data, params = null, options = null) =>
  14. request.post(url, data, { params, ...options });
  15. export const putRequest = (url, data, params = null, options = null) =>
  16. request.put(url, data, { params, ...options });
  17. export const patchRequest = (url, data, params = null, options = null) =>
  18. request.patch(url, data, { params, ...options });
  19. export const deleteRequest = (url, params = null, options = null) =>
  20. request.delete(url, { params, ...options });
  21. export const downloadRequest = (url, params = null, options = null) =>
  22. request.get(url, { params, ...options, responseType: 'blob' });
  23. export const replaceInUrl = (url, pathVariables = {}) => {
  24. const keys = Object.keys(pathVariables);
  25. if (!keys.length) {
  26. return url;
  27. }
  28. return keys.reduce(
  29. (acc, key) => acc.replace(`{${key}}`, pathVariables[`${key}`]),
  30. url,
  31. );
  32. };
  33. export const addHeaderToken = (token) => {
  34. request.defaults.headers.Authorization = `Bearer ${token}`;
  35. };
  36. export const addHeaderCookie = (key, value) => {
  37. request.defaults.headers[`${key}`] = value;
  38. };
  39. export const removeHeaderToken = () => {
  40. delete request.defaults.headers.Authorization;
  41. };
  42. export const attachPostRequestListener = (postRequestListener) => {
  43. request.interceptors.response.use(
  44. (response) => response,
  45. (response) => postRequestListener(response),
  46. );
  47. };
  48. export const apiDefaultUrl = request.defaults.baseURL;