JavaScript Fetch API. Можно ли получить доступ к заголовкам, а также к JSON в обратном вызове `.then`? - PullRequest
2 голосов
/ 27 мая 2020

Мне нужно сделать запрос POST, а затем, в зависимости от ответа, а также заголовков, мне нужно обновить сохраненное состояние, я знаю, что заголовки доступны через response.header.get('SOME-KEY'), и я могу получить доступ к JSON части ответа в обратном вызове .then, например: .then(response => response.json()).then(json =>())

я хочу знать, есть ли способ получить оба в блоке, который имеет проанализированные данные ответа JSON?

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Ну, я не знаю, как я это пропустил, решение было чрезвычайно простым, .json() возвращает Promise, поэтому мы можем просто вызвать .then для него внутри текущего контекста и делать то, что мы хотим, с заголовки и тело ответа:

fetch('/url')
  .then(response => response.json().then(json => ({...json, token: response.header.get('TOKEN')})))
  .then(json => props.updateUser(json));

Таким образом мы можем получить желаемый объект, который содержит значения заголовка, а также данные ответа. Иногда все, что вам нужно для решения вашей проблемы, - это немного поспать.

1 голос
/ 27 мая 2020

Да, вы можете:

.then(response => {
    console.log(response.data)
    console.log(response.headers)
})

https://github.com/axios/axios#response -схема

...