Presentamos GraphQL en una fiesta

GraphQL y REST son dos paradigmas utilizados para crear API para aplicaciones web.

REST es un conjunto de identificadores únicos (URL) que las aplicaciones usan para solicitar y enviar datos.

GraphQL es un lenguaje de consulta que permite a las aplicaciones cliente especificar con precisión los datos que necesitan desde un único punto final.

Estas son tecnologías relacionadas, se usan principalmente para las mismas cosas (o pueden coexistir), pero son muy diferentes.

Suena un poco fresco, ¿verdad? Expliquemos sus diferencias de una manera más interesante, que puede ayudarlo a comprender mejor GraphQL, y tal vez solo divertirlo.

¿Estás en un cóctel?


imagen

Viniste a la fiesta para hacer contactos, por lo que necesitas información sobre las personas que te rodean. Cerca hay cinco invitados más.

Sus etiquetas de nombre son las siguientes:

Richy REST
Friend of Richy REST
Empleador de Richy REST
Georgia GraphQL

Siendo una persona activa y sociable, vas directamente a Richie Rest y le dices: "Hola, soy Adam Epilation, ¿y quién eres?" La respuesta de Richie Resta es:

{ name: "Richy REST", age: 33, married: false, hometown: "Circuits-ville", employed: true // ... 20 other things about Richy REST } 

Pensaste para ti mismo, "Wow, demasiada información de inmediato". Tratando de evitar el silencio incómodo, recuerdas que Richie Rest mencionó que él trabaja y pregunta: "¿Dónde trabajas?"

Sorprendentemente, Richie Rest no tiene idea de dónde trabaja. Tal vez el empleador Richie Resta en el saber?

Usted hace la misma pregunta al empleador Ritchie Resta, quien está feliz de responder su pregunta:

 { company: "Mega Corp", employee_count: 11230, head_quarters: "1 Main Avenue, Big City, 10001, PL" year_founded: 2005, revenue: 100000000, // ... 20 other things about Richy REST Employer } 

En este punto ya estás agotado. ¡Ni siquiera quieres conocer a un amigo de Richie Resta! Puede tomar una eternidad, desperdiciar toda su energía y, además, ya no tiene tiempo.

Sin embargo, Georgia GrafKewel está muy cerca y decides chatear con ella.

"Hola, ¿cómo te llamas?"

 { name: "Georgia GraphQL" } 

"¿De dónde eres y cuántos años tienes?"

 { hometown: "Pleasant-Ville", age: 28 } 

"¿Cuántos pasatiempos y amigos tienes y cómo se llaman tus amigos?"

 { hobbies_count: 12, friends_count: 50, friends: [ { name: "Steve" }, { name: "Anjalla" }, // ...etc ] } 

Georgia GrafKewEl es increíble, articula pensamientos claramente, concisos y precisos. Definitivamente desea intercambiar tarjetas de visita con ella y trabajar juntos en proyectos futuros.

Esta historia incluye la experiencia de los desarrolladores que trabajan con GraphQL y REST. GraphQL permite a los desarrolladores formular lo que quieren con una consulta ordenada y obtener solo lo que especifican en respuesta. Estas consultas son dinámicas, por lo que solo se requiere un punto final. REST, por el contrario, tiene respuestas predefinidas y requiere que las aplicaciones usen múltiples puntos finales para consultar completamente los datos.

Termina con las metáforas. Empecemos a trabajar


Para una mayor divulgación de los conceptos presentados en la metáfora del partido, nos referimos específicamente a dos limitaciones que a menudo surgen al usar REST.

1. Múltiples visitas para obtener recursos relacionados

La gestión de datos para aplicaciones móviles y web a menudo requiere recursos y conjuntos de datos relacionados. Por lo tanto, obtener datos utilizando la API REST puede implicar numerosas solicitudes de puntos finales múltiples. Por ejemplo, una solicitud de publicación y su autor asociado pueden realizarse mediante dos solicitudes a diferentes puntos finales:

 someServer.com/authors/:id someServer.com/posts/:id 

Las llamadas repetidas a la API afectan el rendimiento de la aplicación. Esto es aún más importante para dispositivos con bajo ancho de banda (por ejemplo, relojes inteligentes, IoT, dispositivos móviles antiguos, etc.).

2. Recolección excesiva y baja

La recuperación excesiva o la recuperación insuficiente son inevitables cuando se utiliza la API RESTful. Usando el ejemplo anterior, el endpoint domainName.com/posts/:id recupera datos para un registro específico. Cada entrada consta de atributos como id, cuerpo, título, publishingDate, authorId y otros. En REST, una respuesta está predefinida y siempre se devuelve el mismo objeto de datos.

En situaciones en las que solo se requieren el título y el texto de la grabación, se produce una recuperación excesiva porque se envían más datos a través de la red de los que realmente se utilizan.

Cuando se requiere la publicación completa, junto con los datos relacionados sobre su autor, no hay una recuperación insuficiente, porque se envían menos datos a través de la red de los que realmente se utilizan. La recuperación insuficiente de datos lleva a un aumento en el número de solicitudes de API y, como resultado, al uso excesivo de los recursos de Internet.

Consultas de clientes con GraphQL


GraphQL representa un enfoque único que brinda una tremenda flexibilidad a las aplicaciones del cliente. Con GraphQL, la consulta se envía a su API y se devuelve exactamente lo que necesita, ni más ni menos, en una sola consulta. Los resultados de la consulta se devuelven en la misma forma que la consulta misma, asegurando que la estructura de respuesta sea siempre predecible. Estos factores permiten que las aplicaciones se ejecuten más rápido y sean más estables, ya que controlan los datos que reciben, no el servidor.

"Los resultados se devuelven en la misma forma que las consultas"


 /* Query */ { myFriends(first: 2) { items { name age } } } 

 /* Response */ { "data": { "items": [ { "name": "Steve", "age": 27 }, { "name": "Kelly", "age": 31 } ] } } 

Control de la realidad


Ahora probablemente pienses que trabajar con GraphQL es tan fácil como cortar mantequilla tibia con una espada de samurai. Esto puede ser cierto para los desarrolladores front-end. Sin embargo, cuando se trata de configurar el lado del servidor, alguien tiene que hacer el trabajo más difícil. Nuestra amiga Georgia GrafKewEl ha hecho un gran esfuerzo para convertirse en una profesional con clase.

La creación de la API GraphQL del lado del servidor requiere tiempo, esfuerzo y experiencia. Sin embargo, aquellos que están listos para la prueba pueden hacer frente a esto. Hay muchas formas diferentes de hacer esto, por ejemplo:

Por su cuenta : si realmente quiere hacer todo usted mismo, intente construir la API GraphQL con paquetes. Usando rieles? Prueba graphql-ruby. Love Node.js? Prueba express-graphql.

Con la ayuda : si la configuración de alojamiento flexible es una prioridad para usted, entonces algo como Graph.cool puede ayudarlo a comenzar con el proyecto GraphQL.

Instantáneo : ¿Cansado de escribir una plantilla CRUD y quiere comenzar rápidamente? 8base proporciona una API GraphQL instantánea y un servidor back-end que se puede ampliar.

En conclusión


Para los servicios web, REST fue un importante paso adelante, facilitando la creación de API para acceder a los recursos necesarios. Sin embargo, su diseño no tuvo en cuenta la proliferación actual de dispositivos móviles, con varias restricciones en el volumen y los requisitos de descarga de datos. Esta omisión condujo a la creciente popularidad de GraphQL, que Facebook hizo de código abierto en 2015, principalmente debido a la flexibilidad que brinda a los desarrolladores front-end. Trabajar con GraphQL es una experiencia fantástica tanto para desarrolladores individuales como para equipos.

Source: https://habr.com/ru/post/470097/


All Articles