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.
GraphQL | ||
---|---|---|
Información general | ||
Tipo de programa | Graph Query Language | |
Autor | ||
Desarrollador | Facebook, and community | |
Lanzamiento inicial | 2015 | |
Enlaces | ||
Sitio web oficial
Repositorio de código
| ||
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]
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
}
]
}
}