#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