Как отправить заголовок авторизации Axios в ReactNative? - PullRequest
0 голосов
/ 21 октября 2018

Я добавляю перехватчик, например

function ({getState, dispatch, getSourceAction}, config) {
          AsyncStorage.getItem("userToken").then((value) => {
              config.headers.Authorization = `Bearer ${value}`;
          })

          console.log(config);
          return config;
        }

Я могу задать заголовок авторизации в консоли, но мой сервер не получает его.

enter image description here

1 Ответ

0 голосов
/ 21 октября 2018
const headers = {
  Accept: 'application/json',
  'Content-Type': 'application/json',
};

const URL = 'yourUrl';

const makeAuthenticatedApiCall = ({
  method = 'get',
  path,
  data,
  customHeaders = {},
}) => {
  console.log(`Calling ${method}`, `${URL}${path}`);
  return axios({
    url: `${URL}${path}`,
    method,
    headers: {
      ...headers,
      ...customHeaders
    },
    data,
  });
};


// and make a call like this:
AsyncStorage.getItem("userToken").then((value) => {

   makeAuthenticatedApiCall({
          method: 'put',
          path: '/resourcePathToBeAddedHere',
          {someData: {}},
          customHeaders: { Authorization: `Bearer ${value};` },
        }));
});

Я думаю, что проблема в вашем коде в том, что вы задаете заголовок авторизации в обещании, которое разрешается до возврата:

function ({getState, dispatch, getSourceAction}, config) {
          AsyncStorage.getItem("userToken").then((value) => {
              config.headers.Authorization = `Bearer ${value}`; //<--this is set too late, the return is already done at this point.
          })

          console.log(config);
          return config;
        }
...