La elección del estilo arquitectónico de API depende del tipo de consumidores, el volumen de datos, los requisitos de velocidad de desarrollo de la interfaz y escalabilidad.
Ejemplo de controlador REST (Node.js/Express):
app.get('/api/users/:id', function(req, res) { // ... res.json(user); });
Ejemplo de definición de servicio gRPC (protobuf):
service UserService { rpc GetUser (UserRequest) returns (UserResponse); }
Ejemplo de consulta en GraphQL:
query { user(id: "123") { id name posts { title } } }
Características clave:
¿Se puede usar GraphQL para cualquier API empresarial?
¡No siempre! GraphQL es bueno para datos agregados complejos, pero para interfaces CRUD simples y alta carga, REST suele ser más simple y eficiente.
¿gRPC es adecuado para clientes móviles/web?
Normalmente no, gRPC requiere soporte para HTTP/2 y no se integra con navegadores sin proxies especiales, por lo que se usa raramente en el frontend.
¿El API REST siempre es más fácil de versionar que los demás?
No necesariamente. La versionado de GraphQL se resuelve a nivel de esquema, mientras que REST generalmente a través de cambios en URI o encabezados, lo que no siempre es conveniente para la evolución de un esquema de datos complejo.