Redux-Saga передает заголовки на вызов axios.post - PullRequest
0 голосов
/ 10 ноября 2018

У меня возникли некоторые трудности с redux-saga. У меня есть следующая сага:

createPostSaga:

function* createPostSaga(action) {
  const token = yield select(selectToken);
  const headerParams = {
    Authorization: `JWT ${token}`
  };
  console.log(token, headerParams);
  try {
    yield call(axios.post, "/posts/", action.payload, headerParams);
    yield call(getPosts());
  } catch (error) {
    console.log(error);
  }
}

Как вы можете видеть, я выбираю свой токен и помещаю в объект с ключом Authorization и значением JWT ${token}, мой API все еще отвечает 401 unauthorized, но это должно быть проблемой с этим вызовом, потому что я может повторить этот вызов в Почтальоне, и он проходит нормально:

Postman Request

Кто-нибудь видит, что я сделал не так?

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

Вы должны вызвать функцию следующим образом.

function* createPostSaga(action) {
  const token = yield select(selectToken);
  const headerParams = {
    Authorization: `JWT ${token}`
  };
  console.log(token, headerParams);
  try {
    yield call(axios.post, "/posts/", action.payload, {headers:headerParams});
    yield call(getPosts());
  } catch (error) {
    console.log(error);
  }
}
0 голосов
/ 10 ноября 2018

Попробуйте создать функцию извлечения и использовать ее внутри .call.

function* createPostSaga(action) {
  const token = yield select(selectToken);
  const headerParams = {
    "Authorization": `JWT ${token}`
  };

  const apiCall = () => {
    return axios.post('/posts', {
      action.payload // only if not an object. Otherwise don't use outer {},
    },
    headerParams: headerParams,
   ).then(response => response.data)
    .catch(err => {
      throw err;
    });
  }

  console.log(token, headerParams);
  try {
    yield call(apiCall);
    yield call(getPosts());
  } catch (error) {
    console.log(error);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...