Como conductos a través de los cuales interactúan los componentes de software program y los datos fluyen a través de Web, las API son el alma de los servicios internet contemporáneos. Las tecnologías API como SOAP (un protocolo de mensajería de servicios internet), REST (un estilo arquitectónico) y GraphQL (un lenguaje y herramienta de programación) simplifican el desarrollo de software program al permitir la integración de datos y servicios de terceros. Las API también permiten a las empresas ofrecer funciones de servicio seguras e intercambio de datos a empleados, socios comerciales y usuarios.
A pesar de los muchos tipos de API, los debates sobre dos paradigmas principales han dominado la conversación en los últimos años: REST (transferencia de estado representacional) y GraphQL. Ambos ofrecen una variedad de beneficios y, por lo tanto, se implementan para proyectos de networking en todo el mundo. Sin embargo, difieren significativamente en la forma en que gestionan el tráfico de datos. Aquí, analizamos esas diferencias y analizamos cómo las empresas pueden utilizar las API REST y GraphQL para optimizar sus redes.
¿Qué son las API REST y GraphQL?
Es necesario comprender las API REST y GraphQL individualmente para compararlas.
DESCANSAR
Desarrollado a principios de la década de 2000, REST es un estilo arquitectónico estructurado para aplicaciones hipermedia en crimson, que está diseñado para utilizar un protocolo de comunicación cliente/servidor sin estado y almacenable en caché. Las API REST, también llamadas API RESTful, son los impulsores de las arquitecturas REST.
Las API REST utilizan identificadores de recursos únicos (URI) para abordar los recursos. Las API REST funcionan haciendo que diferentes puntos finales realicen operaciones CRUD (“crear”, “leer”, “actualizar” y “eliminar”) para los recursos de la crimson. Se basan en un formato de datos predefinido (llamado tipo de medio o tipo MIME) para determinar la forma y el tamaño de los recursos que proporcionan a los clientes. Los formatos más comunes son JSON y XML (y a veces HTML o texto sin formato).
Cuando el cliente solicita un recurso, el servidor procesa la consulta y devuelve todos los datos asociados con ese recurso. La respuesta incluye códigos de respuesta HTTP como “200 OK” (para solicitudes REST exitosas) y “404 Not Discovered” (para recursos que no existen).
GrafoQL
GraphQL es un lenguaje de consulta y tiempo de ejecución API que Fb desarrolló internamente en 2012 antes de convertirse en código abierto en 2015.
GraphQL se outline mediante un esquema API escrito en el lenguaje de definición de esquemas GraphQL. Cada esquema especifica los tipos de datos que el usuario puede consultar o modificar, y las relaciones entre los tipos. Un solucionador respalda cada campo en un esquema. El solucionador proporciona instrucciones para convertir consultas, mutaciones y suscripciones de GraphQL en datos, y recupera datos de bases de datos, servicios en la nube y otras fuentes. Los solucionadores también proporcionan especificaciones de formato de datos y permiten que el sistema une datos de varias fuentes.
A diferencia de REST, que normalmente utiliza múltiples puntos finales para recuperar datos y realizar operaciones de crimson, GraphQL expone modelos de datos mediante el uso de un único punto remaining a través del cual los clientes envían solicitudes GraphQL, independientemente de lo que estén pidiendo. Luego, la API accede a las propiedades de los recursos y sigue las referencias entre recursos para brindarle al cliente todos los datos que necesita a partir de una única consulta al servidor GraphQL.
Tanto las API GraphQL como REST son intercambios de datos basados en recursos que utilizan métodos HTTP (como solicitudes PUT y GET) que dictan qué operaciones puede realizar un cliente. Sin embargo, existen diferencias clave entre ellos que explican no solo la proliferación de GraphQL sino también por qué los sistemas RESTful tienen tal poder de permanencia.
Diferencias entre las API GraphQL y REST
GraphQL ofrece una adición eficiente y más versatile a REST; Las API GraphQL a menudo se consideran una actualización de los entornos RESTful, especialmente dada su capacidad para facilitar la colaboración entre los equipos de front-end y back-end. GraphQL proporciona el siguiente paso lógico en el recorrido API de una organización, ayudando a solucionar problemas que a menudo se encuentran con REST.
Sin embargo, REST fue durante mucho tiempo el estándar para las arquitecturas API y muchos desarrolladores y arquitectos todavía dependen de configuraciones RESTful para administrar sus redes de TI. Como tal, comprender las distinciones entre los dos es parte integral de la estrategia de gestión de TI de cualquier organización.
Las API REST y GraphQL se diferencian en cómo administran:
Recuperación de datos
Debido a que REST se basa en múltiples puntos finales e interacciones sin estado (donde cada solicitud de API se procesa como una nueva consulta, independientemente de cualquier otra), los clientes reciben cada dato asociado con un recurso. Si un cliente solo necesita un subconjunto de datos, aún recibe todos los datos (sobrecarga). Y si el cliente necesita datos que abarquen múltiples recursos, un sistema RESTful a menudo hace que el cliente consulte cada recurso por separado para compensar la recuperación inadecuada de datos de la solicitud inicial (búsqueda insuficiente). Las API GraphQL utilizan un único punto remaining GraphQL para brindar a los clientes una respuesta de datos precisa y completa en un solo viaje de ida y vuelta desde una sola solicitud, eliminando problemas de recuperación excesiva o insuficiente.
Versionado
En una arquitectura REST, los equipos deben versionar las API para modificar las estructuras de datos y evitar errores del sistema e interrupciones del servicio para el usuario remaining. En otras palabras, los desarrolladores deben crear un nuevo punto remaining cada vez que realizan cambios, lo que crea múltiples versiones de API y complica potencialmente el mantenimiento. GraphQL cut back la necesidad de management de versiones porque los clientes pueden especificar sus requisitos de datos en la consulta. La adición de nuevos campos al servidor no afecta a los clientes que no necesitan esos campos. Por el contrario, si los campos están obsoletos, los clientes pueden continuar solicitándolos hasta que se actualicen las consultas.
Manejo de errores
Las API REST deben utilizar códigos de estado HTTP para indicar el estado o el éxito de una solicitud, y cada código de estado tiene un significado específico. Una solicitud HTTP exitosa devuelve un código de estado 200, mientras que un error del cliente puede devolver un código de estado 400 y un error del servidor puede devolver un código de estado 500.
A primera vista, este enfoque para informar de estado parece más sencillo, pero los códigos de estado HTTP suelen ser más útiles para los usuarios internet que para las propias API, especialmente en el caso de errores. REST no tiene una especificación para errores, por lo que los errores de API pueden aparecer como errores de transporte o no aparecer en absoluto con el código de estado. Esta dinámica puede obligar al private a leer la documentación de estado para comprender qué significan los errores o incluso cómo se comunican los errores dentro de la infraestructura.
Con las API GraphQL, cada solicitud, independientemente de si resultó en un error, devuelve un código de estado 200 OK porque los errores no se comunican mediante códigos de estado HTTP (excepto los errores de transporte). En cambio, el sistema comunica errores en el cuerpo de la respuesta junto con los datos, por lo que los clientes deben analizar la carga útil de datos para determinar si la solicitud fue exitosa.
Dicho esto, GraphQL tiene una especificación para errores, por lo que los errores de API se distinguen más fácilmente de los errores de transporte. La naturaleza exacta de los errores aparece en la entrada “errores” en el cuerpo de la respuesta, lo que puede hacer que sea preferible construir con las API GraphQL.
Datos en tiempo actual
REST no tiene soporte integrado para actualizaciones en tiempo actual. Si una aplicación necesita funcionalidad en tiempo actual, los desarrolladores generalmente deben implementar técnicas como el sondeo prolongado (donde el cliente sondea repetidamente el servidor en busca de nuevos datos) y eventos enviados por el servidor, que pueden agregar complejidad a la aplicación.
Sin embargo, GraphQL incluye soporte integrado para actualizaciones en tiempo actual a través de suscripciones. Las suscripciones mantienen una conexión estable con el servidor, lo que permite que el servidor envíe actualizaciones al cliente cada vez que ocurren eventos específicos.
Herramientas y entorno
El entorno REST está bien establecido y cuenta con una amplia gama de herramientas, bibliotecas y marcos disponibles para los desarrolladores. No obstante, trabajar con API REST requiere que los equipos naveguen por varios puntos finales y comprendan las convenciones y patrones únicos de cada API.
Las API GraphQL son relativamente nuevas, pero el entorno GraphQL ha crecido enormemente desde su introducción, con varias herramientas y bibliotecas disponibles para el desarrollo de servidores y clientes. Herramientas como GraphiQL y GraphQL Playground proporcionan potentes entornos de desarrollo integrados (IDE) en el navegador para explorar y probar las API de GraphQL. Además, GraphQL tiene un fuerte soporte para la generación de código, lo que puede simplificar el desarrollo del lado del cliente.
Almacenamiento en caché
Las API REST se basan en mecanismos como eTags y encabezados de última modificación para almacenar en caché las llamadas a la API. Si bien son efectivas, estas estrategias de almacenamiento en caché pueden ser complejas de implementar y es posible que no sean adecuadas para todos los casos de uso.
Las API GraphQL pueden resultar más difíciles de almacenar en caché debido a la naturaleza dinámica de las consultas. Sin embargo, la implementación de consultas persistentes, almacenamiento en caché de respuestas y almacenamiento en caché del lado del servidor puede mitigar estos desafíos y optimizar los esfuerzos de almacenamiento en caché más amplios en las arquitecturas GraphQL.
Cuándo utilizar las API GraphQL y REST
Ni las API REST ni GraphQL son intrínsecamente superiores; son herramientas diferentes que se adaptan a diferentes tareas.
REST generalmente es más fácil de implementar y puede ser una buena opción cuando se prefiere un protocolo de comunicación sencillo y almacenable en caché con controles de acceso estrictos (para sitios de comercio electrónico públicos como Shopify y GitHub, por ejemplo). Dados los riesgos de recuperación insuficiente o excesiva, las API REST son mejores para:
Empresas que utilizan aplicaciones más pequeñas con perfiles de datos más simples Empresas sin requisitos complejos de consulta de datos Empresas donde la mayor parte de la base de clientes utiliza datos y operaciones de manera comparable
Las API GraphQL permiten una obtención de datos más versatile y eficiente, lo que puede mejorar el rendimiento del sistema y la facilidad de uso para los desarrolladores. Estas características hacen que GraphQL sea especialmente útil para crear API en entornos complejos con requisitos de interfaz de usuario que cambian rápidamente. Esto incluye:
Empresas con ancho de banda limitado que buscan limitar las llamadas y respuestas Empresas que desean combinar puntos de datos en un único punto remaining Empresas cuyas solicitudes de clientes varían significativamente
Aunque utilizan enfoques diferentes, las API GraphQL y REST tienen el potencial de mejorar en gran medida la escalabilidad de la crimson y el rendimiento del servidor.
Tome el management de su entorno API con IBM API Join
Independientemente de si elige implementar API REST o GraphQL (o alguna combinación de ambas), su empresa puede beneficiarse de una amplia gama de aplicaciones potenciales, incluidas implementaciones en varios lenguajes de programación (como JavaScript) e integración con microservicios y arquitecturas sin servidor. Con IBM API Join, puede utilizar ambos tipos de API para optimizar su infraestructura de TI.
IBM API Join es una solución de gestión de API de ciclo de vida completo que le ayuda a crear, gestionar, proteger, socializar y monetizar API y promover la transformación digital en centros de datos y entornos de nube. Esto significa que tanto las empresas como los clientes pueden impulsar aplicaciones digitales y estimular la innovación en tiempo actual.
Con API Join, las empresas pueden ayudar a garantizar que están operando a la vanguardia de la gestión de API, lo que resultará invaluable en un panorama informático que está a punto de crecer, ser más complejo y más competitivo con el tiempo.
Discover IBM API Join Suscríbase a actualizaciones de temas de IA
¿Te resultó útil este artículo
SíNo