Этот вопрос спрашивают на каждом втором собеседовании. Давай разберемся, как отвечать на него. А также поговорим о том, как используют другие http-методы при проектировании API.
Данные в HTTP запросе могут быть переданы от клиента следующими способами:
- 1. В пути запроса - route
https://t.me/sanazarovsanazarovявляется username и считывается из пути. - 2. В параметрах запроса - query
https://t.me/sanazarov?payment=true
Знак вопроса используется для отделения параметров от основного пути. Поэтому?в параметрах всегда экранируется, так как в строке может быть всего лишь один такой символ.payment=trueявляется ключ-значением с ключомpaymentи значениемtrue. Если параметров несколько, то они разделяются символом&:
https://t.me/sanazarov?payment=true&hello=world
Строка запроса имеет ограничение по длине, которое может варьироваться в зависимости от сервера. Поэтому большие данные лучше передавать в теле запроса. - 3. В заголовках запроса - headers
"Authorization": "Bearer JWT".
JWT-токен передается в заголовке "Authorization" с указанием схемы авторизации Bearer. Существуют заголовки запроса и заголовки ответа. То есть, серверное приложение может установить заголовки ответа для клиента. - 4. В теле запроса - body
{"hello": "world"}
Наиболее популярным форматом для передачи данных является JSON. Также можно передавать файлы, изображения.
Ты узнал о способах передачи данных в http-запросе, пришло время узнать о разнице GET и POST запросов.
GET запрос не содержит тела запроса.
Данные могут быть переданы только в пути, параметрах запроса и заголовках. POST наоборот, может использовать все способы передачи данных.
🌐 Немного о семантике основных http-методов
- POST запросы используются для создания сущностей и передачи файлов. POST - первый кандидат, если твой метод называется Create или Upload. Может использоваться для получения данных, если запрос слишком большой. Например, в фильтре содержатся большие массивы, которые могут не поместиться в размер параметров запроса.
- GET запросы используются для получения данных и как правило не меняют состояние сервера. Методы, которые содержат Get в начале названия.
- PATCH и PUT запросы используются для изменения данных. Используй метод, который используются на твоем месте работы. Обычно команда использует один из методов. Я руководствуюсь стандартами HTTP и использую PUT для запросов с семантикой "Обновить или Создать", а PATCH для семантики "Обновить".
- DELETE используются для удаления сущностей.
Теперь ты знаешь как отвечать на вопрос о разнице POST и GET методов, и даже больше. Удачи на собеседованиях! 👋
#техничка #backend
Дискуссия