Вопрос по работе с API

Есть такой API, где представлены персонажи "Звездных войн": https://swapi.dev/documentation#people

У меня задача, что, если искомый персонаж не найден, то выводить сообщение "Ничего не найдено". Как это сделать?


Ответы (2 шт):

Автор решения: MoloF

async function findByName(name) {
    const params = new URLSearchParams({ search: name });
    const response = await fetch('https://swapi.dev/api/people/?' + params);
    const result = await response.json();
    return result.count >= 1 ? result.results : null;
}

(async () => {
    const peoples = await Promise.all([
        findByName('Luke'),
        findByName('r2'),
        findByName('123'),
    ]);
    
    for (const people of peoples)
        if (people)
            console.log(people[0].name);
        else
            console.log('People is not found');
})();

Итоговый вариант:

async function findByName(name) {
    const params = new URLSearchParams({ search: name });
    const response = await fetch('https://swapi.dev/api/people/?' + params);
    const result = await response.json();
    return result.count >= 1 ? result.results : null;
}

const input = document.querySelector('#input');
const datalist = document.querySelector('#datalist');

input.oninput = async (e) => {
    const { value } = e.target;
    const peoples = await findByName(value);
    if (!peoples) return;
    
    const options = peoples.map(
        ({ name }) => `<option value="${name}">`
    );

    datalist.innerHTML = options.join('');
}
<label>Enter people name:</label>
<input id="input" list="datalist" />

<datalist id="datalist"></datalist>

→ Ссылка
Автор решения: win
.catch(function() {
      alert("Ничего не найдено, попробуйте еще раз!");
});

Всё оказалось гораздо проще. Достаточно использовать перехват ошибок try...catch.

→ Ссылка