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.