Skip to content

Latest commit

 

History

History
25 lines (23 loc) · 1.39 KB

66-public-api-choices.md

File metadata and controls

25 lines (23 loc) · 1.39 KB
layout title date comments categories language
post
Public API Choices
2018-10-04 01:38
true
system design
en

In summary, to choose a tool for the public API, API gateway, or BFF (Backend For Frontend) gateway, I prefer GraphQL for its features like tailing results, batching nested queries, performance tracing, and explicit caching.

JSON RPC GraphQL REST gRPC
Usecases Etherum Github V2, Airbnb, Facebook BFF / API Gateway Swagger High performance, Google, internal endpoints
Single Endpoint
Type System ✅ as weak as JSON
No uint64

No uint64
✅ w/ Swagger
No uint64

has uint64
Tailored Results
Batch nested queries
Versioning Schema Extension Yes, w/ v1/v2 route s Field Numbers in protobuf
Error Handling Structured Structured HTTP Status Code Structured
Cross-platform
Playground UI GraphQL Bin Swagger
Performance tracing ? Apollo plugin ? ?
caching No or HTTP cache control Apollo plugin HTTP cache control Native support not yet. but still yes w/ HTTP cache control
Problem Lack of community support and toolchainBarrister IDL 42.51 kb client-side bundle size Unstructured with multiple endpoints. awful portability. Grpc-web dev in progress140kb JS bundle. Compatibility issues: not all places support HTTP2 and grpc dependencies