Перейти к основному содержимому

Другая сторона API

Программы на TypeScript бывают не только серверами — они и сами обращаются к API: получают данные, общаются с сервисами, интегрируют сторонние системы. Клиент — это fetch, встроенный в Node.js, и три привычки:

1. выполнить запрос (await fetch(url) для GET или fetch(url, { method, headers, body }) для полного контроля),
2. проверить res.status, прежде чем доверять телу ответа — fetch не выбрасывает исключение на 404 или 500,
3. прочитать тело один раз, с помощью await res.json() или await res.text() — никогда оба сразу.

Примеры ниже обращаются к небольшому локальному серверу, запущенному внутри той же программы, поэтому вывод стабилен — а код клиента ровно такой же, какой вы направили бы на настоящий URL.


GET и декодирование

Повседневная задача: выполнить GET к URL, проверить статус и превратить JSON-тело в данные с помощью await res.json(). Этот вызов возвращает any, поэтому as UserRecord[] сообщает проверщику типов, что именно вы ожидаете получить.

Получаем список в объекты

Тело ответа становится UserRecord[], а дальше это обычные данные TypeScript — их перебирают в цикле и печатают поле за полем.

Prompt
Напишите программу на TypeScript, которая с помощью fetch выполняет GET-запрос за JSON-массивом пользователей к небольшому локальному серверу, запущенному в том же файле, проверяет код состояния, превращает тело ответа в UserRecord[] с помощью await res.json() и печатает id и имя каждого пользователя.
Вывод: программа на TypeScript и захваченный вывод

POST с JSON-телом

Отправка данных — зеркальное отражение: сериализуем объект в строку, передаём его как body с правильным типом содержимого, а затем читаем ответ сервера, который здесь несёт присвоенный сервером id.

Отправляем объект, читаем ответ

Объект уходит в формате JSON, а созданная запись возвращается с новым id 7 — весь путь записи API-клиента в одной маленькой программе. Node.js печатает разобранный объект как { id: 7, name: 'Cleo' }.

Prompt
Напишите программу на TypeScript, которая с помощью fetch отправляет POST-запросом нового пользователя в формате JSON с типом содержимого application/json к небольшому локальному серверу, который присваивает id и отвечает 201, затем читает ответ и печатает статус и созданного пользователя с его новым id.
Вывод: программа на TypeScript и захваченный вывод