ЛР4 "Взаимодействие с внешними API-сервисами"
Цель работы
Ознакомиться с клиент-серверной архитектурой устройств в сети с использованием микроконтроллера ESP32
Теоретические сведения
HTTP (HyperText Transfer Protocol)
HTTP — это протокол прикладного уровня для передачи данных в сети Интернет. Он используется для обмена данными между клиентом (например, браузером) и сервером.
Основные характеристики:
- Статус-коды:
- 200 OK — успешный запрос.
- 404 Not Found — ресурс не найден.
- 500 Internal Server Error — ошибка на сервере.
- Методы HTTP:
- GET — запрос данных.
- POST — отправка данных для создания ресурса.
- PUT — обновление ресурса.
- DELETE — удаление ресурса.
Заголовки (Headers) используются для передачи метаданных (например, тип содержимого, авторизация). Тело запроса (Body) используется для передачи данных (например, JSON, XML).
REST (Representational State Transfer)
REST — это архитектурный стиль для создания веб-сервисов. Он основан на принципах HTTP и использует его методы для взаимодействия с ресурсами.
Основные принципы REST:
- Ресурсы (каждый ресурс идентифицируется URL, например, /users)
- HTTP-методы (используются для выполнения операций над ресурсами GET, POST, PUT, DELETE)
- Статус-коды (используются для информирования клиента о результате запроса)
- Без состояния (каждый запрос содержит всю информацию, необходимую для его выполнения)
- Кэширование ответы могут быть кэшированы для повышения производительности
Пример REST API:
- GET /users — получить список пользователей
- GET /users/1 — получить данные пользователя с ID=1
- POST /users — создать нового пользователя
- PUT /users/1 — обновить данные пользователя с ID=1
- DELETE /users/1 — удалить пользователя с ID=1
Задание
- Повторить код из примера для доступа к api www.timeapi.io
- Реализовать общение с сервером с авторизацией и разными типами запросов
- Реализовать подключение к интернету (подключение ESP32 к точке доступа с телефона)
- С помощью библиотеки urequests выполнить запрос на сервер\
- Получить access token по адресу /api/v0/get_token, передав нужные данные (имя, фамилия, группа)
- Выполнить запрос /api/v0/get_result с передачей полученного токена в заголовках
Пример тела запроса для получения токена:
{
"name": "Ivan",
"surname": "Ivanov",
"group": "BAG"
}
Пример запроса для получения токена в CURL:
curl --location 'http://194.87.111.91/api/v0/get_token' \
--header 'Content-Type: application/json' \
--data '{
"name": "Ivan",
"surname": "Ivanov",
"group": "BAG"
}'
Внимание, нужно учесть:
- тип запроса GET/POST
- адрес сервера
- правильный URL метода
- необходимое тело запроса
- необходимые параметры заголовка
Пример запроса в CURL для получения результата.
curl --location 'http://194.87.111.91/api/v0/get_result' \
--header 'x-api-key: b1e4ae87-13fb-440b-8c73-d8a6f2a68d8e' \
--data ''
В ответе будет сообщение о результате операции
Внимание, нужно учесть:
- тип запроса GET/POST
- адрес сервера
- правильный URL метода
- необходимые параметры заголовка
Результаты работы продемонстрировать преподавателю
Отчет
В отчете представить скриншоты и описание действий по пунктам, представленным в задании
Отчет по ГОСТу
Защита
- Источник
- Для чего используется
- HTPP методы
- Технологии реализации API