Ответ
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
}
Вот и вся магия, сука. Каждый инструмент для своего дела. Главное — не перепутать, где молоток, а где микроскоп, а то можно и по пальцам получить, в рот меня чих-пых.