GraphQL es un lenguaje de manipulación y consulta de datos de código abierto para API , y un tiempo de ejecución para completar consultas con datos existentes. [2] GraphQL fue desarrollado internamente por Facebook en 2012 antes de ser lanzado públicamente en 2015. [3] El 7 de noviembre de 2018, el proyecto GraphQL se trasladó de Facebook a la recientemente establecida GraphQL Foundation, alojada por la organización sin fines de lucro Linux Foundation . [4] [5] Desde 2012, el aumento de GraphQL ha seguido con precisión la línea de tiempo de adopción establecida por Lee Byron, el creador de GraphQL. [6] El objetivo de Byron es hacer que GraphQL sea omnipresente en todas las plataformas web.
Desarrollador (es) | Facebook y comunidad |
---|---|
Versión inicial | 14 de septiembre de 2015 |
Lanzamiento estable | Junio de 2018 [1] |
Repositorio | github |
Escrito en | Implementaciones en Java , JavaScript , Ruby , Scala , otros. |
Sistema operativo | Multiplataforma |
Sitio web | graphql |
Proporciona un enfoque para desarrollar API web y se ha comparado y contrastado con REST y otras arquitecturas de servicios web . Permite a los clientes definir la estructura de los datos requeridos, y el servidor devuelve la misma estructura de los datos, lo que evita que se devuelvan cantidades excesivamente grandes de datos, pero esto tiene implicaciones sobre la eficacia del almacenamiento en caché web de los resultados de las consultas. . La flexibilidad y riqueza del lenguaje de consulta también agrega complejidad que puede no ser útil para API simples. [7] [8] [9] A pesar del nombre, GraphQL no proporciona la riqueza de operaciones de grafos que uno podría encontrar en una base de datos de grafos completa como Neo4j , o incluso en dialectos de SQL que soportan el cierre transitivo . Por ejemplo, una interfaz GraphQL que informa a los padres de un individuo no puede devolver, en una sola consulta, el conjunto de todos sus antepasados.
GraphQL consta de un sistema de tipos, lenguaje de consulta y semántica de ejecución, validación estática e introspección de tipos . Admite leer, escribir (mutar) y suscribirse a cambios en los datos (actualizaciones en tiempo real, que se implementan más comúnmente mediante Websockets ). [10] Los servidores GraphQL están disponibles para varios lenguajes, incluidos Haskell , [11] JavaScript , [12] Perl , [13] Python , [14] Ruby , Java , C ++ , [15] C # , Scala , Go , Rust , Elixir , [16] Erlang , PHP , R , D [17] y Clojure .
El 9 de febrero de 2018, GraphQL Schema Definition Language (SDL) se convirtió en parte de la especificación. [18]
Ejemplo
Solicitud POST :
{ pedidos { identificación lista de productos { producto { nombre precio } cantidad } cantidad total }}
Respuesta:
{ "data" : { "orders" : [ { "id" : 1 , "productsList" : [ { "product" : { "name" : "orange" , "price" : 1.5 }, "amount" : 100 } ], "totalAmount" : 150 } ] } }
Ver también
- Consulta por ejemplo
- Especificación de OpenAPI
- Microservicios
Referencias
- ^ "Notas de la versión de junio de 2018 de GraphQL" . Consultado el 26 de marzo de 2019 .
- ^ "GraphQL: un lenguaje de consulta para API" .
- ^ "GraphQL: un lenguaje de consulta de datos" .
- ^ "GraphQL de Facebook tiene su propia base de código abierto" . TechCrunch . Consultado el 7 de noviembre de 2018 .
- ^ "La Fundación Linux anuncia la intención de formar una nueva base para apoyar GraphQL - La Fundación Linux" . La Fundación Linux . 6 de noviembre de 2018 . Consultado el 7 de noviembre de 2018 .
- ^ Anthony, art. "¿GraphQL se está moviendo hacia la ubicuidad?" . NordicAPIs .
- ^ "GraphQL vs REST: descripción general" . Phil Sturgeon . Consultado el 25 de noviembre de 2018 .
- ^ "Por qué utilizar GraphQL, buenas y malas razones" . Ingeniería honesta . 4 de agosto de 2018 . Consultado el 26 de noviembre de 2018 .
- ^ "Fundamentos de GraphQL" . Howto GraphQL . Consultado el 4 de julio de 2018 .
- ^ "GraphQL" . facebook.github.io . Facebook . Archivado desde el original el 18 de julio de 2018 . Consultado el 4 de julio de 2018 .
- ^ "Hasura - GraphQL instantáneo en tiempo real en Postgres" . Hasura . Consultado el 24 de octubre de 2019 .
- ^ "GraphQL js" .
- ^ "GraphQL - Implementación de GraphQL en Perl" .
- ^ "Grafeno" . graphene-python.org . Consultado el 18 de junio de 2017 .
- ^ graphql / libgraphqlparser , GraphQL, 27 de mayo de 2020 , consultado el 30 de mayo de 2020
- ^ "Absinthe: el kit de herramientas GraphQL para Elixir" . Consultado el 19 de julio de 2018 .
- ^ https://code.dlang.org/packages/graphqld
- ^ "GraphQL SDL incluido en el repositorio de Github" .
enlaces externos
- Página web oficial