Biblioteca del servidor GraphQL para Rust
GraphQL es un lenguaje de consulta de datos desarrollado por Facebook destinado a servir interfaces de aplicaciones web y móviles.
Juniper hace posible escribir servidores GraphQL en Rust que sean seguros para escribir e increíblemente rápidos. También intentamos que la declaración y resolución de esquemas GraphQL sea tan conveniente como lo permita Rust.
Juniper no incluye un servidor web; en cambio, proporciona componentes básicos para que la integración con los servidores existentes sea sencilla. Opcionalmente, proporciona una integración prediseñadas para los marcos Actix, Hyper, Rocket y Warp, incluidos Graphiql y GraphQL Playground integrados para facilitar la depuración.
El libro también está disponible para la rama master y versiones anteriores publicadas después de la 0.11.1. Ver el índice del libro.
El mejor lugar para comenzar es el Juniper Book, que contiene guías con muchos ejemplos que cubren todas las funciones de Juniper. (mucho WIP)
Para comenzar rápidamente y familiarizarse con Juniper, consulte la sección Inicio rápido.
Para obtener información específica sobre macros, tipos y la API de Juniper, la Referencia de API es el mejor lugar para buscar.
También puedes consultar el esquema de Star Wars para ver un ejemplo complejo que incluye polimorfismo con rasgos e interfaces. Para ver un ejemplo de integración de marco web, consulte las carpetas de ejemplos de actix, axum, hyper, rocket y warp.
Juniper admite el lenguaje de consulta GraphQL completo según la especificación (octubre de 2021), incluidas interfaces, uniones, introspección de esquemas y validaciones. También puede generar el esquema en GraphQL Schema Language.
Como excepción a otras bibliotecas GraphQL para otros lenguajes, Juniper crea tipos no nulos de forma predeterminada. ¡Un campo de tipo Vec<Episode>
se convertirá en [Episode!]!
. El tipo de Rust correspondiente, por ejemplo, [Episode]
sería Option<Vec<Option<Episode>>>
.
Juniper es independiente del formato de serialización y del transporte de red.
Juniper admite la ejecución asincrónica y sincrónica mediante execute()
y execute_sync()
respectivamente. La ejecución asincrónica es independiente del tiempo de ejecución.
Juniper sigue un enfoque de código primero para definir esquemas GraphQL. Si desea utilizar un enfoque de esquema primero, considere juniper-from-schema para generar código a partir de un archivo de esquema.
Juniper tiene integración automática con algunas cajas Rust muy comunes para facilitar la creación de esquemas. Los tipos de estas cajas se podrán utilizar en sus esquemas automáticamente.
Juniper aún no ha llegado a 1.0, por lo que se debe esperar cierta inestabilidad de la API.