Fetch API сохраняет значение пользовательского заголовка для последующего использования - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть следующее:

let eTag: any 

const request = (method: string) => (basePath: string) => async (path: string, data?: object) => {
  const accessToken = await getAccessToken()
  const opt: any = {
    method,
    headers: {
      Authorization: `Bearer ${accessToken}`,
      ...(data && { eTag })
    },
    ...(data && { body: data }),
  }

  return fetch(`${basePath}${path}`, opt).then(
    res => {
      eTag = res.headers.get('ETag')

      return res.json()
    }
  )
}

Мне удалось получить значение из заголовка клиента eTag, но, похоже, оно не сохраняется правильно.

Я получить ошибку Unexpected end of JSON input в отношении res.json()

1 Ответ

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

res.json() возвращает обещание . Так что вам нужно следующее:

let eTag: any 

const request = (method: string) => (basePath: string) => async (path: string, data?: object) => {
  const accessToken = await getAccessToken()
  const opt: any = {
    method,
    headers: {
      Authorization: `Bearer ${accessToken}`,
      ...(data && { eTag })
    },
    ...(data && { body: data }),
  }

  return fetch(`${basePath}${path}`, opt).then(
    async res => { //add async keyword
      eTag = res.headers.get('ETag')

      return await res.json() //add await here to return resolved json
    }
  )
}
...