Javascipt fetch анализирует результат JSON

#javascript

#javascript

Вопрос:

 let apiUrl = this.serverAdress   '/api2/auth-token/';

const data = {
  'username': this.username,
  'password': this.password
};
let header = {
  'Content-Type': 'application/json',
  'X-SEAFILE-OTP': totp
};

const response = await fetch(new Request(apiUrl, {
  method: 'POST',
  headers: new Headers(header),
  body: JSON.stringify(data),
}));

return response;
 

Я получаю ответ от API следующим образом, я хочу проанализировать результат как JSON.

Когда я пытаюсь получить доступ к токену, используя await response.json()["token"] , я получаю обратно undefined.

Комментарии:

1. const json = await fetch(...).then(response => response.json()); или (await response.json())["token"]

Ответ №1:

response.json() возвращает обещание, которое будет преобразовано в результат синтаксического анализа JSON.

Средства доступа к объектам имеют более высокий приоритет, чем await , так что ваш код ожидает response.json()["token"] быть обещанием.

 const parsedResponse = await response.json();
const token = parsedResponse.token;
 

Вы также можете использовать круглые скобки для управления приоритетом, но результат будет не таким читабельным.

 const token = (await response.json()).token;
 

Ответ №2:

Попробуйте

 (await response.json()).token