Все еще довольно неопытный, и я пытаюсь обработать ошибку "400 Bad Request".

У меня есть сайт с панелью поиска.
Значение, введенное в строку поиска, затем помещается в URL-адрес API, который возвращает объект.
Всякий раз, когда вводится неправильное значение поиска, консоль сайта возвращает «400 неверных запросов» для URL-адреса API.
Я также получаю объект ошибки ниже из запроса API URL.

{
    "meta": {
        "code": 400,
        "errorType": "failed_geocode",
        "errorDetail": "Couldn't geocode param near: Jljjl",
        "requestId": "59208ac96a6071641949481d"
    },
    "response": {}
}

То, что я хочу сделать, это использовать условный оператор, как показано ниже, для обработки этой ошибки:

try {
    if (400 Bad Request) throw "incorrect";
} catch (err) {
    document.getElementById('results').innerHTML = "Input is " + err;
}

Я пробовал условные операторы, подобные приведенным ниже, но кажется, что я не могу получить доступ ни к одному из значений в объекте ошибки, который возвращается:

if (object.meta.code === 400)
if (object.meta.code !== 200)
if (object === undefined) // or null or 0

Как поместить ошибку 400 Bad Request в оператор if или есть другой способ обработки этих ошибок?
Спасибо

4
TheBiscuit 28 Май 2017 в 02:26

2 ответа

Лучший ответ

Просто чтобы отмахнуться от m1kael это то, что у меня есть

window.fetch('https://api.foursquare.com/v2/venues/explore?v=20170324&near=Jljjl&query=study%20spot&limit=10&intent=browse&radius=100000&venuePhotos=1&client_id=XPQI2RJB3NMDT2JYQIMWDMGZSKRDQZX40NYIOKK02DXB1CVE&client_secret=UNHLLMUWXTEI3USTTN5DRJ02QDWQMHZQ5B22CFX0EY4JLEHO')
.then(r => r.json())
.then(r => {
  if (r.meta.code === 400) {
    console.error('Error')
  } else {
    console.log(r)
  }
})
2
Adam Recvlohe 28 Май 2017 в 01:04

Используя API Fetch, это можно сделать с помощью следующего:

fetch(url)
    .then((res) => {
        if (res.status === 400) {
            throw new Error('your error message here');
        }
        return res.json();
    })
    .then(json => {
        // handle response normally here
    })
    .catch(ex => {
        // handle errors here
    });
2
m1kael 28 Май 2017 в 00:44