Какие знаешь методологии API, кроме REST

Ответ

GraphQL — позволяет клиентам запрашивать только нужные данные, избегая избыточности. Пример запроса:

query {
  user(id: 1) {
    name
    posts {
      title
    }
  }

gRPC — бинарный протокол на основе HTTP/2, использует Protocol Buffers для сериализации. Быстрее REST, поддерживает стриминг.

WebSocket — двустороннее соединение для real-time коммуникации (чаты, уведомления).

SOAP — XML-протокол со строгой типизацией, используется в корпоративных системах.

RPC (JSON-RPC/XML-RPC) — простые протоколы для вызова удалённых методов. Пример JSON-RPC:

{
  "method": "subtract",
  "params": [42, 23],
  "id": 1
}

Ответ 18+ 🔞

Да ты посмотри, какие протоколы понапридумывали, блядь! Прямо как в магазине — на любой вкус и цвет, только выбирай, сука.

Вот GraphQL, например. Штука хитрая, блядь. Клиент такой приходит и говорит: «Тащи мне только имя юзера и заголовки его постов, а всю остальную хуйню — нахуй не надо». И сервер, покряхтывая, выдает ровно это, без лишней лапши. Красота, ёпта! Раньше бы REST'ом тебе всю биографию пользователя с детсада приволокли, а тут — чисто по делу.

query {
  user(id: 1) {
    name
    posts {
      title
    }
  }
}

А вот gRPC — это вообще, блядь, реактивный снаряд. Никаких тебе JSON'ов с их непотребным раздуванием. Всё в бинарнике, на HTTP/2, летает как угорелое. Ещё и стримить умеет — залил тебе поток данных, и сиди, довольный, как слон. Для микросервисов — просто песня, ядрёна вошь!

WebSocket — это когда общаться надо без остановки, в реальном времени. Чат там, или уведомления какие. Открыл соединение — и болтай себе, пока не надоест. Никаких «запрос-ответ», всё как в жизни — говори, когда вздумается.

SOAP... О, этот дедушка, блядь. Весь в XML'ях, с кучей конвертов, схем и прочей бюрократии. Но в корпоративном мире его до сих пор любят, потому что там всё строго, по бумажкам. Типа «ни шагу в сторону, всё по WSDL». Скучно, конечно, зато надёжно, как швейцарские часы, ёперный театр.

Ну и простенькие RPCшки, вроде JSON-RPC. Примитив, блядь, но иногда именно его и надо. Кинул JSON'чик с методом и параметрами — получил ответ. Никаких заморочек.

{
  "method": "subtract",
  "params": [42, 23],
  "id": 1
}

Вот и вся магия, сука. Каждый инструмент для своего дела. Главное — не перепутать, где молоток, а где микроскоп, а то можно и по пальцам получить, в рот меня чих-пых.