Как я могу включить данные ответа в ответ axios?

#reactjs #redux #axios

#реагирует на #возвращение #аксиос

Вопрос:

Я стараюсь работать с перехватчиками Axios. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу показать ответ, полученный от API с помощью Axios, или даже если это так, он показывает постоянные данные.

 axios.defaults.baseURL = 'https://localhost:5001/api/'; axios.defaults.withCredentials = true;  const responseBody = res =gt; res.data;  axios.interceptors.response.use(async response =gt; {  const pagination = response.headers["x-pagination"];  if (pagination) {  const parsed = JSON.parse(pagination);  let metaData = {  currentPage: parsed.currentPage,  pageSize: parsed.pageSize,  totalPages: parsed.totalPages,  totalCount: parsed.totalCount  };  response.data = {  metaData,  data: response.data //I want to change this data  // For example there is an endpoint named getAll and it returns all object  // Also there is a get endpoint and it returns a single object   // But the problem is axios always return getAll endpoint's data.   };  return response;  } }, error =gt; {  return Promise.reject(error); });  

Это мой объект запроса

 const requests = {  get: (url, params) =gt; axios.get(url, {params}).then(responseBody),  post: (url, data) =gt; axios.post(url, data).then(responseBody),  put: (url, data) =gt; axios.put(url, data).then(responseBody),  delete: (url) =gt; axios.delete(url).then(responseBody),  postForm: (url, data) =gt; axios.post(url, data, {  headers: {  'Content-Type': 'multipart/form-data'  }  }).then(responseBody),  putForm: (url, data) =gt; axios.put(url, data, {  headers: {  'Content-Type': 'multipart/form-data'  }  }).then(responseBody) };  

и это мои конечные точки API

 const Endpoints = {  getAll: () =gt; requests.get('Endpoint'),  get: (id) =gt; requests.get(`Endpoint/${id}`),  create: (data) =gt; requests.postForm('Endpoint', data),  update: (id, data) =gt; requests.putForm(`Endpoint/${id}`, data),  delete: (id) =gt; requests.delete(`Endpoint/${id}`), }  

Что я упускаю? Кроме того, я использую Redux Slice. Если вы хотите, я также могу отправить код исправления, который я пишу.

Ответ №1:

 axios.interceptors.response.use(async response =gt; {  const pagination = response.headers["x-pagination"];  if (pagination) {  const parsed = JSON.parse(pagination);  let metaData = {  currentPage: parsed.currentPage,  pageSize: parsed.pageSize,  totalPages: parsed.totalPages,  totalCount: parsed.totalCount  };  response.data = {  metaData,  data: response.data  };  return response;  }  return response; // problem solved after this }, error =gt; {  return Promise.reject(error); });  

Проблема в том, что я забываю вернуть ответ, поэтому я всегда получаю одни и те же данные.