Цель работы

Ознакомиться с клиент-серверной архитектурой устройств в сети с использованием микроконтроллера 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

Задание

  1. Повторить код из примера для доступа к api www.timeapi.io
  2. Реализовать общение с сервером с авторизацией и разными типами запросов
    • Реализовать подключение к интернету (подключение 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