fetch => response.json () запрос отклонен - PullRequest
0 голосов
/ 19 мая 2019

У меня есть веб-сайт, с которого я пытаюсь получить данные.Я использую оконный отладчик, чтобы скопировать выборку

fetch("website", {"credentials":"include","headers":{"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3","accept-language":"en-US,en;q=0.9","upgrade-insecure-requests":"1"},"referrerPolicy":"no-referrer-when-downgrade","body":null,"method":"GET","mode":"cors"})
.then(response => {console.log(response)})

Это работает, и я могу проверить ответ в отладчике.Я хочу получить доступ к телу данных:

body: (...)
bodyUsed: false
headers: Headers {}
ok: true
redirected: false
status: 200
statusText: ""
type: "basic"
url: website
__proto__: Response

Я прочитал, что мне нужно превратить его в объект json, например:

fetch("website", {"credentials":"include","headers":{"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3","accept-language":"en-US,en;q=0.9","upgrade-insecure-requests":"1"},"referrerPolicy":"no-referrer-when-downgrade","body":null,"method":"GET","mode":"cors"})
    .then(response => {console.log(response.json())})

Я получаю эту ошибку:

[[PromiseStatus]]: "rejected"
[[PromiseValue]]: SyntaxError: Unexpected token < in JSON at position 0
message: "Unexpected token < in JSON at position 0"

Я не слишком разбираюсь в получении и попытке собрать воедино, что делает выборка.

Что я делаю не так?Как я могу получить доступ к данным body?

1 Ответ

1 голос
/ 19 мая 2019

В заголовках запроса вы указываете, что примете ответ text/html.

Попробуйте вместо этого указать правильный тип MIME application/json - и API должен вернуть правильные данные json в качестве ответа.

Если вы собираетесь извлечь его как текст, вы можете получить доступ к текстовым данным с помощью response.text() вместо response.json()

(см. Документацию по извлечению Методы тела ответа )

...