Cuando utilizar REST GraphQL, Webhooks y gRPC
En ocaciones olvidamos que existen varios estilos para diseñar API's, por lo general se suele trabajar con REST, ya que se ha vuelto prácticamente un estándar entre los desarrolladores web hoy en día, pero existen otros estilos que pueden ayudarnos a resolver problemas para escenarios más específicos, en este pequeño post, platicaremos un poco sobre algunos estilos para diseñar API's.
REST (Representational State Transfer)
Cómo ya hemos mencionado en un principio, REST, es el estilo más común, está construido de tal manera que cualquier servicio web que cumpla con REST pueda obtener datos o indicar la ejecución de operaciones sobre esos datos. Estas operaciones generalmente se definen cuando se usa GET, POST, PUT, entre otras acciones del protocolo HTTP. REST actualmente es una solución muy efectiva y poderosa para el desarrollo de API's en microservicios. Empresas grandes como PayPal utilizan REST para el procesamiento de pagos.
GraphQL
GraphQL trabaja de manera opuesta a lo que se suele imaginar cuando se habla de una relación cliente-servidor ya que de lo contrario a la manera tradicional, es del lado del cliente donde se determina qué datos se requieren, cómo se requieren y en qué formato se requieren. lo cual es la principal diferencia que tiene con REST, Cabe mencionar que podemos ganar rendimiento gracias a que se disminuye el número de consultas al servidor. una de las grandes empresas que utilizan GraphQL hoy en día es Github ya que requerían una forma de entregar datos sin hacer múltiples consultas.
Webhook
Webhook nos permite comunicar dos aplicaciones web en tiempo real, de manera sencilla, a través del protocolo HTTP, en otras palabras, una aplicación web "A" envía una notificación a una aplicación web "B" tras ocurrir cierto evento, entonces el sitio web "B" permite ejecutar acciones en respuesta a la notificación recibida.
gRPC
gRPC es un protocolo open-source creado y utilizado por Google para conectar sus microservicios de manera sencilla. La característica más importante de gRPC es el concepto de protobufs . Los Protobufs son sistemas de lenguaje y plataforma neutrales que se utilizan para serializar datos, lo que significa que estas comunicaciones se pueden serializar y comunicar de manera eficaz. Además, gRPC tiene un sistema de autenticación muy efectivo y poderoso que utiliza SSL / TLS a través del sistema basado en token de Google.
Conclusión
Resulta injusto decir que alguno de estos estilos es mejor que otro, ya que cada uno tiene un enfoque distinto que pueden ayudarnos a resolver distintos tipos de problemas, cabe mencionar que escoger el estilo para nuestras API's es una decisión importante ya que afecta directa o indirectamente la manera que el usuario final interactua con nuestro sistema, Al final la decisión es suya.