Как отправить запрос к API сайта и получить JSON: пошаговое руководство
-
Отправка запроса к API сайта — это базовый навык для работы с данными в вебе. Вы научитесь формировать запросы и парсить JSON-ответы, чтобы извлекать нужную информацию.
Это поможет автоматизировать задачи, интегрировать сервисы и анализировать данные без ручного копания в HTML. Разберём на примерах с Node.js, которые подойдут новичкам и опытным разработчикам.
Что такое API-запрос и зачем его отправлять
API — это интерфейс для общения с сервером сайта. Когда вы отправляете запрос, сервер возвращает данные в удобном формате, чаще всего JSON. Это позволяет получать списки пользователей, курсы валют или новости без парсинга HTML.
Представьте, что нужно собрать данные о сотрудниках компании. Вместо скриншотов страниц вы шлёте GET-запрос и получаете чистый JSON с именами, email и ID. Такой подход экономит время и минимизирует ошибки. А если добавить POST, то можно даже отправить данные на сервер для обновления.
Дальше разберём, как настроить опции запроса. Без них сервер просто не поймёт, чего вы хотите. Логично начать с простого GET, а потом перейти к обработке ответа.
- Метод запроса: Укажите
GETилиPOSTв объекте опций. По умолчанию берётсяGET, но лучше писать явно. - Hostname и путь:
hostname— это домен сервера,path— конкретный endpoint вроде/employees. - Заголовки: Добавьте
Content-Type: application/jsonдля POST-запросов с телом.
Параметр Описание Пример method HTTP-метод GETилиPOSThostname Домен API jsonplaceholder.typicode.compath Путь к ресурсу /usersheaders Дополнительные заголовки { 'Content-Type': 'application/json' }Создаём GET-запрос в Node.js шаг за шагом
Для GET-запроса в Node.js используем встроенный модуль
httpили библиотеки вродеrequest. Сначала импортируем модуль, потом формируем опции. Сервер ждёт точных параметров, иначе вернёт ошибку 404 или 400.Возьмём пример с тестовым API, которое отдаёт список сотрудников. Создаём объект
optionsс методомGET, hostname и path. Затем запускаемhttp.request(options). Сервер ответит чанками данных — кусочками JSON, которые нужно собрать.Это подводит к обработке событий:
data,endиerror. Без них данные потеряются или скрипт упадёт. Собираем чанки в массив, а наendпарсим весь буфер черезJSON.parse().- Импортируйте
httpиurl:const http = require('http');. - Создайте
options:{ method: 'GET', hostname: 'api.example.com', path: '/employees' }. - Запустите запрос:
const req = http.request(options, (res) => { ... });. - Обработайте чанки:
let chunks = []; res.on('data', chunk => chunks.push(chunk));. - На ‘end’ парсите:
const data = JSON.parse(Buffer.concat(chunks).toString());. - Выведите результат:
console.log(data.results);— увидите массив объектов.
Событие Что делать Пример кода data Собирать чанки chunks.push(chunk)end Парсить JSON JSON.parse(...)error Логировать ошибку console.error(err)POST-запрос с данными в body
POST нужен, когда отправляем данные на сервер — например, создать нового сотрудника. Укажите метод
POST, добавьте тело запроса в JSON. Сервер проверит заголовки и вернёт подтверждение или ошибку.Пример: шлём объект
{ name: 'Иван', email: 'ivan@example.com' }на/employees. В опциях добавляемheadersсContent-Type. Пишем тело вreq.write(JSON.stringify(data))и закрываемreq.end().Сервер ответит JSON с ID нового записи. Это базовый сценарий для CRUD-операций. Если забыть
end(), запрос зависнет.- Подготовьте данные:
const postData = { name: 'Анна', age: 30 };. - JSON-строка:
const body = JSON.stringify(postData);. - Опции с хедерами: Добавьте
'Content-Length': Buffer.byteLength(body). - Отправьте:
req.write(body); req.end();. - Проверьте статус:
if (res.statusCode === 201) { ... }.
Метод Когда использовать Особенности GET Получение данных Без body, кэшируется POST Создание/обновление С body, не кэшируется Обработка ошибок и асинхронность
Ошибки — норма при работе с API: таймауты, 404, неверный JSON. Добавьте обработчики на
errorдля запроса и ответа. Логируйте статус-код и тело ошибки.Для асинхронности используйте
async/awaitс промисами или библиотеки вродеaxios. Встроенныйhttpсинхронный, но чанки приходят событийно. Оберните в промис для удобства.Это упростит код и сделает его надёжным. Тестируйте на публичных API вроде JSONPlaceholder.
- Таймаут:
req.setTimeout(5000, () => req.destroy());. - Проверка статуса:
if (res.statusCode >= 400) { console.error('Ошибка:', res.statusCode); }. - Валидация JSON:
try { JSON.parse(data); } catch (e) { console.error('Неверный JSON'); }. - Retry-логика: Повторяйте запрос при 5xx ошибках.
Ошибка Причина Решение 404 Неправильный path Проверьте endpoint 429 Rate limit Добавьте задержку ENOTFOUND Нет хоста Проверьте hostname Масштабирование: от простого скрипта к интеграции
Когда освоите базовые запросы, переходите к пакетам вроде
axiosилиnode-fetch. Они упрощают async/await и дают интерцепторы для заголовков. Интегрируйте в Express для прокси или ботов.Осталось место для аутентификации (Bearer token в headers) и вебхуков. Подумать стоит над rate limiting и кэшированием ответов.
- Метод запроса: Укажите
© 2024 - 2025 ExLends, Inc. Все права защищены.