TGViewer
Айтишник обыкновенный 🐰 Айтишник обыкновенный 🐰 @default_itshnik · 1.91K subscribers
Post #413 1.45K
REST, REST и еще раз REST!

В этом посте обещал вернуться с более подробным разбором памятки, если будет такой запрос — возвращаюсь!

На изображении примеры запроса(Request) и ответа(Response). Самое главное, на что стоит обратить внимание:

Все запросы и ответы состоят из заголовков и тела:
▶️Заголовки — это метаданные для передачи сервисной информации о запросе. По крайней мере так обычно принято их использовать. Реже их используют для передачи бизнес-данных, но тоже используют, и в отдельных кейсах это может быть оправдано и полезно. В заголовки можно класть информацию о формате данных в теле и его кодировке, данные о клиенте(не путать с пользователем), данные о пользователе(куки, токены и тд), данные о версии API и тд.
▶️Тело — здесь обычно передают бизнес-данные. Формат передачи может быть сильно разный, например, JSON, YAML, Plain text(обычный текст), Binary(двоичный формат) и тд. Тело является опциональным атрибутом в запросе и ответе с точки зрения протокола, но с точки зрения стиля REST, все зависит от метода в запросе, об этом дальше.

Запросы всегда содержат метод. Но перед этим надо разобраться:

❓Что такое безопасный метод?
Это метод, который не производит изменений на сервере. Например, получение данных(GET) — безопасно, а вот создание(POST) — небезопасно.

❓Что такое идемпотентный метод?
Метод, при повторном вызове которого идентичным запросом, возвращается один и тот же результат, не производя повторные изменения на сервере. Метод может быть идемпотентным из коробки, как например GET, а может стать идемпотентным искусственно за счет реализации проверок на сервере и добавления специального ключа. Обычно искусственную идемпотентность делают для метода POST.

В REST всего пять семь методов:
1️⃣ POST — создает ресурсы, поэтому всегда содержит тело в запросе и обычно содержит тело в ответе с результатом созданных данных. Метод является небезопасным, так как может создавать новые данные, а также из коробки является неидемпотентным.
2️⃣ GET — предоставляет данные по ресурсу, поэтому всегда имеет пустое тело в запросе, но содержит тело в ответе с запрашиваемыми данными. Метод является безопасным, так как не изменяет и не создает ресурсы, а также является из коробки идемпотентным.
3️⃣ PUT — изменяет ресурс полностью по его идентификатору, всегда содержит тело в запросе и обычно содержит тело в ответе с результатом. Метод является небезопасным, так как изменяет ресурсы, а также из коробки является идемпотентным.
4️⃣ PATCH — частично изменяет ресурс по его идентификатору, всегда содержит тело в запросе и обычно содержит тело в ответе с результатом. Метод является небезопасным, так как изменяет ресурсы, а также является идемпотентным. В зависимости от реализации может быть неидемпотентным, старайтесь просто не использовать данный метод, так как не смотря на его простую функциональность, на самом деле метод усложняет всем жизнь.
5️⃣ DELETE — удаляет ресурс по его идентификатору, поэтому всегда имеет пустое тело в запросе, но содержит тело в ответе с удаленными данными. Метод является небезопасным, так как удаляет данные, а также из коробки является идемпотентным, так как повторное использование DELETE с тем же id ни к чему не приведет, однако, в зависимости от реализации, может вызвать ошибку.

Еще в запросе должен содержаться ресурс, к которому мы обращаемся для его создания, получения или изменения(если используется стиль REST). Ресурс это часть URI. Опционально и в зависимости от реализации в URI также может содержаться версия API, к которой обращается клиент, и параметры, на основе которых выполняется фильтрация или пагинация.

В ответе всегда есть статус. Он состоит из кода и короткого сообщения. Например, при успешно отработанном запросе возвращается код "200 OK". Подробнее по распрастраненным кодам писал тут.

#быстростатья #REST #API
  • ❤ 14
  • 👍 12
  • 💅 4
More from @default_itshnik
  1. Mar 1, 2026Быть старпером не модно, а законно С первым днем весны! С сегодняшнего дня начинает работа…
  2. Feb 27, 2026Меня переиграл и уничтожил ребёнок Началось утро ни разу ни с кофе. И даже ни с чая. Да че…
  3. Feb 22, 2026Отправила нюдсы через пылесос! Хакеры научились следить за россиянами через умные пылесосы…
  4. Feb 19, 2026Соболезную офисным бедолагам! Сегодня на улице происходит кайфец)) Пока шел в поликлинику,…
  5. Feb 15, 2026Посмотрел на голую жопу Тимоти Шаламе (реально) 🫥 Не переживай, спойлеров не будет 😊 Што…
  6. Feb 14, 2026Я люблю тебя! Наверное, все мои коллеги по каналам уже выложили тематические валентинки. А…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →