Итоги и практика
Главное
- — это меню запросов, которое одна программа предлагает другой, и это контракт: спросите условленным способом — получите ответ условленной формы. Большинство багов API — это нарушение контракта одной из сторон.
- — то, в каком виде приходит ответ: ключи и значения, собранные из объектов
{ }и массивов[ ], которые вкладываются друг в друга. Типы данных: string, number, boolean, null, array, object. - Ловушка «строка против числа» (
42против"42") и «отсутствует противnull» — самые частые баги формы. Теперь вы умеете читать JSON — проверяйте тип, когда что-то ведёт себя странно. - API-ключ — это пароль. Никогда не отправляйте его в браузер, никогда не коммитьте в , храните в переменных окружения. Утёкший ключ нужно немедленно сменить (rotate).
- Следите за лимитами запросов (
429) и тарификацией по факту — написанные ИИ циклы, что зовут платный API без паузы, и есть путь к четырёхзначному счёту. Сначала прочтите цены и настройте оповещение о бюджете.
Попробуйте сами
Найдите в браузере бесплатный API без ключа — например, откройте https://api.github.com/users/octocat прямо в новой вкладке. Вы увидите сырой ответ в JSON. Читайте его как анкету: выделите объекты { }, найдите массив, если он есть, и назовите тип трёх разных значений (какие строки? числа? булевы? есть ли null?). Вы только что проделали ровно ту проверку, которую эта глава просит выполнять для каждого ответа API, что подключает ИИ.
Промпт главы
Я обращаюсь к API и хочу как новичок сам проверить форму данных.
Вот настоящая документация (пример запроса + пример ответа):
<вставьте сюда пример запроса и JSON-ответа из документации API>
- Прежде чем писать код разбора, покажи мне сырой JSON, который возвращает
вызов, и укажи ключи, их типы и всё, что может быть null или отсутствовать.
- Подтверди, что ключи, которые читает мой код, действительно есть в этом ответе.
- Убедись, что API key читается из переменной окружения на сервере
и никогда не зашит в код и не отправляется в браузер.
- Скажи, что произойдёт, если вызов упадёт, истечёт по таймауту или упрётся в лимит запросов.