Взаимодействие по протоколу http состоит из запросов и ответов.У каждого запроса есть несколько параметров, давайте пройдемся по ним.
Тип запроса
Get, post, put, patch, delete, head, options. Чаще всего мы будем сталкиваться с get и post. Метод get нам нужен для того, чтобы запросить какие-то данные с сервера. Post для того, чтобы передарить и получить результаты. Когда мы в браузере открываем страницу и в тот момент, когда она отображается делается запрос get. А если мы хотим заполнить и отправить какую то веб форму, то мы уже будем использовать post запрос.
Адрес обращения
Например в каком нибудь url /registration кодируется нужный ресурс на сервере.
Http заголовки
Заголовки представляют собой информацию о запросе или ответе и используются для передачи различных параметров и метаданных, которые не отображаются непосредственно на веб-странице. HTTP-заголовки могут включать разнообразную информацию, такую как:
- User-Agent: Идентификация браузера или клиентского приложения, отправляющего запрос.
- Content-Type: Тип контента, передаваемого в теле запроса или ответа (например, текст, изображение, JSON).
- Content-Length: Размер тела запроса или ответа в байтах.
- Host: Доменное имя сервера, к которому направлен запрос.
- Accept: Типы контента, которые клиент может обработать.
- Cookie: Информация о куках, передаваемая серверу с каждым запросом.
- Location: Используется в HTTP-редиректах для указания нового местоположения ресурса.
- Authorization: Используется для передачи информации для аутентификации, например, токена доступа.
- Cache-Control: Управление кешированием на клиенте или сервере.
- Server: Информация о сервере, обрабатывающем запрос.
- Date: Дата и время создания запроса или ответа.
Примеры заголовков, как они выглядят в chrome dev tools вы можете увидеть в видео-уроке. Это лишь несколько примеров. Существует множество других заголовков, каждый из которых выполняет определенную функцию в рамках протокола HTTP. Заголовки играют важную роль в обеспечении правильной передачи данных, а также в управлении кэшированием, безопасностью и другими аспектами веб-взаимодействия.
Тело запроса
Тело запроса может содержать различные данные, в зависимости от типа запроса и его назначения. Наиболее распространенные типы тел запросов. Примеры body, как они выглядят в chrome dev tools вы можете увидеть в видео-уроке:
- Текстовые данные (Text data): Это может быть обычный текст, JSON (JavaScript Object Notation), XML (eXtensible Markup Language) или любой другой формат данных.
- Формы (Form data): Когда пользователь отправляет данные через веб-страницу, они часто отправляются в виде данных формы, таких как данные ввода пользователя.
- Бинарные данные (Binary data): Например, изображения, аудио- или видео файлы, передаются как бинарные данные.
Структура ответа
В структуре ответа у нас точно также есть как и в запросе есть заголовки и точно также как и в случае запроса это словарь, тут сервер, например, может сообщить клиенту в каком формате отправлен ответ и тело ответа, то есть сами данные, которые нам отдал сервер.
HTTP-статус-коды
HTTP-статус-коды представляют собой трехзначные числа, которые сервер отправляет в ответ на запрос. Эти коды делятся на пять основных классов, каждый из которых представляет определенную категорию ответа. Вот эти классы и их основные представители:
- Информационные (Informational) 100-199.
100 Continue: Сервер понял начальную часть запроса и ждет дальнейших инструкций клиента.
- Успешные (Success) 200-299.
200 OK: Запрос успешно выполнен. Это наиболее распространенный код для успешных запросов.
201 Created: Запрос успешно выполнен, и в результате был создан новый ресурс.
204 No Content: Запрос выполнен успешно, но ответ не содержит тела (например, при обновлении информации).
- Запросы перенаправления (Redirection) 300-399.
301 Moved Permanently: Ресурс перемещен навсегда в другое место. Клиентам следует использовать новый URI.
302 Found (или 307 Temporary Redirect): Ресурс временно перемещен. Клиенты могут использовать тот же URI для следующих запросов.
- Запросы относящиеся к ошибки клиента (Client Errors) 400-499.
400 Bad Request: Запрос некорректен, либо сервер не может или не хочет его обрабатывать.
401 Unauthorized: Требуется аутентификация для доступа к ресурсу.
403 Forbidden: Клиент аутентифицирован, но ему запрещено доступать к запрашиваемому ресурсу.
- Ошибки сервера (Server Errors) 500-599.
500 Internal Server Error: Общая ошибка сервера. Что-то пошло не так, и сервер не может выполнить запрос.
502 Bad Gateway: Сервер, выступая в роли шлюза или прокси, получил некорректный ответ от вышестоящего сервера.
503 Service Unavailable: Сервер временно не может обрабатывать запросы. Это может быть из-за перегрузки или технической недоступности.
API и его виды
Мы познакомились с уровнем прикладных протоколов передачи данных, а сейчас познакомимся с уровнем, с которым чаще всего работают программисты.
API, или интерфейс программирования приложений, — это набор инструкций и правил, которые позволяют разным программам «разговаривать» между собой. Как если бы это был набор команд, которые говорят программам, как друг с другом общаться.
Допустим, у вас есть приложение, и вы хотите, чтобы оно использовало какие-то функции другого приложения или сервиса. Вы не хотите знать, как оно устроено внутри, но вам нужен способ отправить запрос и получить ответ. Здесь на помощь приходит API — он предоставляет четкий способ для ваших программ взаимодействовать с другими программами, не вдаваясь в детали их внутренней работы. API упрощает обмен информацией между разными частями программного обеспечения.
Есть несколько основных видов api
- Rest — достаточно простой архитектурный стиль для построения веб-сервисов про него мы поговорим больше всего и будем использовать его для обучения и далее.
- Soap протокол который строится на обмене xml данными
- Graphql — протокол созданный fb, упрощающий создание клиент серврных систем.
- gRPC — это открытый стандарт для обмена данными, разработанный компании google и решающий те же проблемы что и GraphQL, но чуть в другом виде.
Все эти протоколы, могут работать поверх протокола прикладного уровня http
REST
Часть всего используется именно rest. Что вообще значит RESTful API и в чем разница между Rest API и RESTful API. Rest API — это архитектурный стиль, а RESTful API — это тип API, который следует принципам этого архитектурного стиля. То есть два этих термина по сути взаимозаменяемы.
Swagger
Swagger — это инструмент, который позволяет разработчикам описывать, документировать и тестировать API. Он облегчает взаимодействие с веб-службами, предоставляя понятное описание и возможность протестировать запросы и ответы напрямую в интерфейсе. Как работать со Swagger вы можете посмотреть в видео-уроке в начале статьи.