Почему Ax ios не использует заголовок Content-Type и не преобразует метод запроса в GET при ПАТЧИРОВАНИИ к указанному URL c? - PullRequest
0 голосов
/ 18 июня 2020

Я унаследовал кодовую базу с использованием Ax ios, и в остальном я не знаком с библиотекой. Это приложение Node, и я пытаюсь отправить запрос PATCH к стороннему API. Ax ios настраивается следующим образом:

const axios = require('axios').create({
  baseURL: process.env.API_URL,
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json',
  },
  auth: {
    username: process.env.API_USER,
    password: process.env.API_PW,
  },
});

Затем я пытаюсь выполнить следующий запрос PATCH:

const data = {
    fields: {
      field_a: 'yes',
      field_b: 'no',    
    },
  };

  try {
    const res = await axios.patch(`/user/${user.id}`, data, {
      headers: {
        'Content-Type': 'application/json'
      }
    });
    return res;
  } catch (err){
    console.error(err);
  }

Из того, что я вижу, я просто переопределяю Content -Введите заголовок при вызове патча, но это была просто попытка понять это. В любом случае это не работает. В свойстве config объекта ответа я вижу следующее (большая часть исключена):

{
  headers: {
    Accept: "application/json"
    User-Agent: "axios/0.19.0"
  },
  method: 'patch',
}

Глядя на свойство запроса того же объекта ответа, я вижу, что метод там указан как «GET "с заголовком Content-Type, которого там нет. Похоже, что заголовок Content-Type удаляется, а метод изменяется на GET.

Если я ничего не меняю, кроме целевого URL-адреса на /userWRONGPATH/${user.id}, я получаю, как и ожидалось, ответ 404, но данные конфигурации объекта ответа включают следующее:

{
  headers: {
    Accept: "application/json"
    Content-Length: 105
    Content-Type: "application/json"
    User-Agent: "axios/0.19.0"
  }
}

Метод запроса объекта ответа теперь является ожидаемым PATCH. Я не уверен, почему метод patch будет работать для других путей, если это действительно то, что здесь происходит.

1 Ответ

0 голосов
/ 18 июня 2020

Здравствуйте, я думаю, что проблема может быть связана с отправкой заголовка снова в Axe ios вы определяете конфигурацию, и она добавляется ко всем запросам.

Это пример, который я использую для заказа проект с топором ios.

// Axios custom config
const axiosInstance = axios.create({
  baseURL: urlBase,
  // timeout: 1000,
  headers: { 'Content-type': 'application/json' },
});


export const apiPatchRequest = (url, id, obj) => (
  axiosInstance.patch(`${url}/${id}`, obj)
);
...