Порівняння стилів API: REST, GraphQL, gRPC, SOAP і JSON-RPC
Коротко: Інтерфейси можна будувати по-різному: REST універсальний, GraphQL гнучкий для клієнтів, gRPC швидкий між службами, SOAP формальний, а JSON-RPC легкий.
Докладніше: API (інтерфейс) визначає, як програми спілкуються між собою. Вибір стилю впливає на продуктивність, трудовитрати й інструменти. «Найкращого» немає, є лише підхожий підхід.
Подробиці
REST
Ресурси з URL (/users/42), стандартні методи HTTP (GET, POST, PUT, DELETE), здебільшого JSON. Сильні сторони: просто, підтримується всюди, добре кешується, легко тестувати (curl, браузер). Слабкі: надлишкова/недостатня вибірка (забагато чи замало даних за запит), кілька запитів для вкладених даних, потрібне версіонування. Описується за допомогою OpenAPI.
GraphQL
Одна точка входу; клієнт описує, які поля йому потрібні:
{ user(id: 42) { name orders { total } } }Сильні сторони: рівно потрібні дані, один запит для вкладених даних, сувора схема/типи, добре для фронтендів і мобільних застосунків.
gRPC, SOAP, JSON-RPC
gRPC використовує двійковий формат Protobuf і HTTP/2: швидко й строго типізовано між службами. SOAP ґрунтується на XML, формальний і поширений у корпоративному середовищі. JSON-RPC — дуже легкий протокол виклику функцій у JSON.
Див. також: проєктування REST API, GraphQL і gRPC, OpenAPI та Swagger, WebSockets