❓В чем разница между POST и GET в HTTP

Я помогаю Golang, Java и C# разработчикам находить работу и проходить собеседования: резюме и отклики, которые доходят до HR, спокойный собес и торг по офферу. Разбираю механику найма изнутри, я провёл более 100 собеседований. Без воды, только чек-листы и готовые фразы.

httpgetpost

Этот вопрос спрашивают на каждом втором собеседовании. Давай разберемся, как отвечать на него. А также поговорим о том, как используют другие http-методы при проектировании API.

Данные в HTTP запросе могут быть переданы от клиента следующими способами:

  1. 1. В пути запроса - route
    https://t.me/sanazarov
    sanazarov является username и считывается из пути.
  2. 2. В параметрах запроса - query
    https://t.me/sanazarov?payment=true
    Знак вопроса используется для отделения параметров от основного пути. Поэтому ? в параметрах всегда экранируется, так как в строке может быть всего лишь один такой символ. payment=true является ключ-значением с ключом payment и значением true. Если параметров несколько, то они разделяются символом &:
    https://t.me/sanazarov?payment=true&hello=world
    Строка запроса имеет ограничение по длине, которое может варьироваться в зависимости от сервера. Поэтому большие данные лучше передавать в теле запроса.
  3. 3. В заголовках запроса - headers
    "Authorization": "Bearer JWT".
    JWT-токен передается в заголовке "Authorization" с указанием схемы авторизации Bearer. Существуют заголовки запроса и заголовки ответа. То есть, серверное приложение может установить заголовки ответа для клиента.
  4. 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

Дискуссия

Артем Рогов
в семантике REST название метода Create недопустимо и GET ответ может быть кеширован, надо это учитывать при PUT ты обязан передавать все поля сущности, таким образом ты меняет полностью сущность или создает ее с нуля(если ее нет, т.к ты передал все данные сущности) PATCH предназначен для того, чтобы передавать только изменение(например у сущности поменять поле), не передавая весь объект Это есть все по REST
Сергей Назаров | Карьерный бустер
Артем Рогов
в семантике REST название метода Create недопустимо и GET ответ может быть кеширован, надо это учитывать при PUT ты обязан передавать все поля сущности, таким образом ты меняет полностью сущность или создает ее с нуля(если ее нет, т.к ты передал все данные…
Спасибо за дополнение!
Присоединиться к обсуждению →

Читайте так же