Что такое REST API?

Ответ

REST (Representational State Transfer) — это архитектурный стиль для проектирования сетевых API, который использует стандарты и протоколы HTTP.

Ключевые принципы REST:

  1. Единообразие интерфейса (Uniform Interface):
    • Ресурсы идентифицируются URL (например, /api/users/123).
    • Действия над ресурсами определяются HTTP-методами (GET, POST, PUT, DELETE).
    • Сервер возвращает представление ресурса (часто в JSON или XML).
  2. Отсутствие состояния (Stateless): Каждый запрос от клиента должен содержать всю информацию, необходимую серверу для его обработки. Сервер не хранит состояние сессии клиента.
  3. Кэшируемость (Cacheable): Ответы сервера должны явно указывать, можно ли их кэшировать, что повышает производительность.

Пример типичного REST-взаимодействия: Запрос на получение данных пользователя:

GET /api/users/1 HTTP/1.1
Host: example.com
Accept: application/json

Ответ сервера:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 1,
  "name": "Иван Иванов",
  "email": "ivan@example.com"
}

Почему REST популярен: Он прост для понимания, использует вездесущий HTTP, легко интегрируется и хорошо подходит для веб-сервисов и мобильных бэкендов.

Ответ 18+ 🔞

А, ну это про эту вашу моду, REST! Слушай, сейчас объясню, как есть, без всей этой академической пиздобратии.

Представь, что у тебя есть склад, блядь. И ты — начальник этого склада. REST — это такой, блядь, идеальный порядок, чтобы любой мудак с улицы мог прийти и забрать или положить коробку, даже если он впервые тебя видит. Никаких секретных рукопожатий, только чёткие правила, ёпта.

Вот на чём всё держится, блядь:

  1. Всё по полочкам, сука (Единый интерфейс):

    • У каждой коробки на складе — свой уникальный номер, как адрес. Хочешь коробку с игрушками? Вот тебе /склад/игрушки/42. Хочешь коробку с документами? /склад/документы/777. Никакой магии, всё на виду.
    • И действия, блядь, всего четыре, как стороны света: посмотреть (GET), положить новую (POST), заменить старую (PUT), выкинуть нахуй (DELETE). Всё! Не надо придумывать «немножко посмотреть» или «выкинуть, но пожалеть». Четыре глагола и поехали.
    • И когда ты просишь коробку, тебе её не выносят на руках, а, блядь, присылают опись — что внутри. Обычно это JSON, этакая бумажка с пунктиками.
  2. Никакой памяти, блядь (Stateless):

    • Вот это, сука, самое важное. Каждый раз, когда к тебе приходит грузчик, ты его с порога спрашиваешь: «Ты кто такой и что тебе надо?». Он тебе показывает накладную, где всё написано. Ты выполняешь и забываешь его, как страшный сон. Он пришёл завтра — ты снова «Ты кто?». Сервер — как золотая рыбка, память — три секунды. Зато масштабируется — хоть тысячу таких складов наделай, они друг про друга ни хуя не знают и им похуй.
  3. Можно запасать (Кэшируемость):

    • Если грузчик часто спрашивает опись одной и той же коробки, ты можешь ему сказать: «Слушай, братан, опись не менялась, держи прошлую копию, не отвлекай меня». И он месяц может ходить с этой бумажкой, пока ты ему не крикнешь, что пора обновить. Скорость, блядь, растёт как на дрожжах.

Ну и как это выглядит в жизни, ёбушки-воробушки?

Допустим, клиент — это такой наглый курьер. Он приходит и говорит:

GET /api/users/1 HTTP/1.1
Host: example.com
Accept: application/json

Перевод с блатного: «Эй, склад! Дай-ка мне опись (JSON) на коробку под номером «пользователь №1». Быстро, я тороплюсь».

А склад (сервер), такой весь из себя важный, отвечает:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 1,
  "name": "Иван Иванов",
  "email": "ivan@example.com"
}

«На, мудила, держи свою опись. Всё нашёл, статус «200 — всё охуенно». Иван Иванов, почта такая-то. Следующий!».

А почему все на этом REST помешались?

Да потому что он, блядь, простой как три копейки. Все и так знают HTTP, все умеют слать GET и POST. Не надо изобретать свои протоколы, где нужно, блядь, сперва поклониться, потом трижды плюнуть. Взял готовые инструменты, накидал правил — и вот тебе уже готовый API, который и веб-сайт поймёт, и мобильное приложение, и даже, прости господи, умный чайник. Универсальная отмычка, хуй с горы!