Изменить топор ios Схема ответа - PullRequest
1 голос
/ 19 февраля 2020

Как ax ios GitHub состояния страниц, ответ по умолчанию для ax ios на запрос:

{
  // `data` is the response that was provided by the server
  data: {},

  // `status` is the HTTP status code from the server response
  status: 200,

  // `statusText` is the HTTP status message from the server response
  statusText: 'OK',

  // `headers` the headers that the server responded with
  // All header names are lower cased
  headers: {},

  // `config` is the config that was provided to `axios` for the request
  config: {},

  // `request` is the request that generated this response
  // It is the last ClientRequest instance in node.js (in redirects)
  // and an XMLHttpRequest instance in the browser
  request: {}
}

Проблема:

Моя схема ответа API:

{
  success: true,
  message: '',
  data: {}
}

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

(...).then((res) => res.data.data);

Как изменить схему ответа ax ios чтобы не делать .data.data каждый раз?

1 Ответ

1 голос
/ 19 февраля 2020

Вы можете использовать перехватчик ответа, чтобы изменить значение обещания:

axios.interceptors.response.use(function (response) {
  return response.data.data
})

Вы просто сделаете это один раз, и тогда это будет применяться ко всем запросам, сделанным через экземпляр по умолчанию axios. Аналогичный подход может быть использован, если вы создаете свои собственные axios экземпляры, используя axios.create.

. Возможно, вам также понадобится подумать, как обрабатывать ошибки, но подход во многом такой же.

Документация: https://github.com/axios/axios#interceptors

Обновление:

Если вам нужен доступ к success, message и data вместо этого вам понадобится:

axios.interceptors.response.use(function (response) {
  return response.data
})

Деструктурирование может быть полезно при написании обработчика then:

(...).then(({ data, success, message }) => {

});
...