Wybór stylu architektonicznego API zależy od typu konsumentów, objętości danych, wymagań dotyczących szybkości rozwoju interfejsu i skalowalności.
Przykład kontrolera REST (Node.js/Express):
app.get('/api/users/:id', function(req, res) { // ... res.json(user); });
Przykład definicji usługi gRPC (protobuf):
service UserService { rpc GetUser (UserRequest) returns (UserResponse); }
Przykład zapytania GraphQL:
query { user(id: "123") { id name posts { title } } }
Kluczowe cechy:
Czy można używać GraphQL dla wszelkich korporacyjnych API?
Nie zawsze! GraphQL jest dobry dla złożonych agregowanych danych, ale dla prostych interfejsów CRUD i dużych obciążeń REST często jest łatwiejszy i bardziej efektywny.
Czy gRPC nadaje się dla klientów mobilnych/webowych?
Zwykle nie, gRPC wymaga wsparcia HTTP/2 i nie integruje się z przeglądarkami bez specjalnych proxy, dlatego na froncie jest rzadko używane.
Czy REST API jest zawsze łatwiejsze w wersjonowaniu niż pozostałe?
Niekoniecznie. Wersjonowanie GraphQL jest rozwiązywane na poziomie schematu, a REST zwykle poprzez zmianę URI lub nagłówków, co nie zawsze jest wygodne dla ewolucji złożonej struktury danych.