GraphQL

De Wikipedia, la enciclopedia libre
GraphQL
Información general
Tipo de programa Graph Query Language
Autor Facebook
Desarrollador Facebook, and community
Lanzamiento inicial 2015
Enlaces

GraphQL es un lenguaje de consulta y manipulación de datos para APIs, y un entorno de ejecución para realizar consultas con datos existentes.[2]​ GraphQL fue desarrollado internamente por Facebook en 2012 antes de ser liberado públicamente en 2015.[3]​ El 7 de noviembre de 2018, el proyecto GraphQL fue transferido de Facebook a la recien establecida Fundación GraphQL, alojada por la Fundación Linux.[4][5]​ Desde 2012, el crecimiento de GraphQL ha seguido la linea de tiempo de adopción tal como fue propuesta por Lee Byron, creador de GraphQL, con exactitud.[6]​ El objetivo de Byron es hacer GraphQL este presente en todas las plataformas web.

Proporciona una aproximación para desarrollo APIs web y ha sido comparado y contrastado con REST y otras arquitecturas de servicio web. Permite a los clientes definir la estructura de datos requerida, y la misma estructura de datos será regresada por el servidor, impidiendo así que excesivas cantidades de datos sean regresadas, aunque esto tiene implicaciones en cómo de efectivo puede ser el caché web de los resultados de estas consultas. La flexibilidad y riqueza del lenguaje de consulta también añade complejidad que puede no valer la pena para APIs mas sencillas.[7][8][9]​ Consta de un sistema de tipos, lenguaje de consulta y semantica de ejecución, validación estática, e introspección de tipos.

GraphQL soporta lectura, escritura, y subscripción a cambios de información (actualizaciónes en tiempo real – mas comunmente implementada en uso de WebHooks).[10]​ Los servidores de GraphQL están disponibles para múltiples lenguajes, incluyendo Haskell, Javascript, Perl, Python, Ruby, Java, C++,[11]C#, Scala, Go, Rust, Elixir, Erlang, PHP, R, y Clojure.[12][13][14][15][16]

El 9 de febrero de 2018, el Lenguaje de Definición de Esquema GraphQL Schema Definition Language (SDL) comenzó a formar parte de la especificación.[17]

Ejemplo[editar]

POST request:

{
    orders {
        id
        productsList {
            product {
                name
                price
            }
            quantity
        }
        totalAmount
    }
}

Respuesta:

{
    "data": {
        "orders": [
            {
                "id": 1,
                "productsList": [
                    {
                        "product": {
                            "name": "orange",
                            "price": 1.5
                        },
                        "quantity": 100
                    }
                ],
                "totalAmount": 150
            }
        ]
    }
}

Véase también[editar]

Referencias[editar]

  1. «GraphQL June 2018 Release Notes». Consultado el 26 de marzo de 2019. 
  2. «GraphQL: A query language for APIs.». 
  3. «GraphQL: A data query language». 
  4. «Facebook's GraphQL gets its own open-source foundation» (en inglés estadounidense). Consultado el 7 de noviembre de 2018. 
  5. «The Linux Foundation Announces Intent to Form New Foundation to Support GraphQL - The Linux Foundation» (en inglés estadounidense). 6 de noviembre de 2018. Archivado desde el original el 28 de enero de 2019. Consultado el 7 de noviembre de 2018. 
  6. Anthony, Art. «Is GraphQL Moving Toward Ubiquity?». NordicAPIs. 
  7. «GraphQL vs REST: Overview» (en inglés británico). Consultado el 25 de noviembre de 2018. 
  8. «Why use GraphQL, good and bad reasons» (en inglés estadounidense). 4 de agosto de 2018. Archivado desde el original el 26 de noviembre de 2018. Consultado el 26 de noviembre de 2018. 
  9. «GraphQL Fundamentals». Howto GraphQL. Consultado el 4 de julio de 2018. 
  10. «GraphQL». facebook.github.io. Facebook. Archivado desde el original el 18 de julio de 2018. Consultado el 4 de julio de 2018. 
  11. graphql/libgraphqlparser, GraphQL, 27 de mayo de 2020, consultado el 30 de mayo de 2020 .
  12. «Hasura – Instant Realtime GraphQL on Postgres». Hasura. Consultado el 24 de octubre de 2019. 
  13. «GraphQL js». 
  14. «GraphQL - Perl implementation of GraphQL». 
  15. «Graphene». graphene-python.org. Consultado el 18 de junio de 2017. 
  16. «Absinthe: The GraphQL toolkit for Elixir». Consultado el 19 de julio de 2018. 
  17. «GraphQL SDL included in Github repository». 

Enlaces externos[editar]