Лабораторная работа №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