Spring GraphQL , un nuevo proyecto que integra GraphQL Java con Spring Framework, se ha presentado a la comunidad Java. Como sucesor del proyecto GraphQL Java Spring , Spring GraphQL proporcionará seguridad adicional, pruebas mejoradas y manejo de excepciones, métricas e integración con Querydsl . El proyecto se encuentra en una fase histórica hacia una versión 1.0, actualmente, y está buscando comentarios.
SR12 del Spring Cloud Hoxton Release Train está disponible y presenta principalmente correcciones de errores. Esta será la última versión de servicio en este tren de versiones, pero se admitirá con correcciones de errores críticos y manejo de problemas de seguridad hasta finales de febrero de 2022. Se pueden encontrar más detalles en las notas de la versión .
Spring Authorization Server 0.1.2 ha sido lanzado con: la capacidad de configurar páginas de consentimiento de autorización personalizadas , puntos finales de autorización y puntos finales token ; e implementaciones JDBC de las interfaces
Introducción
Si está buscando comenzar, diríjase a la documentación de referencia y lea la sección “Boot Starter”, o ejecute las muestras .
Si no sabe mucho sobre GraphQL, hay muchos buenos recursos. Puede comenzar en graphql.org/learn .
GraphQL es ampliamente adoptado y en “Mayoría temprana” basado en las tendencias de arquitectura de InfoQ para 2020. Proporciona una alternativa a las API REST que se centra más en los datos y proporciona un esquema y un lenguaje de consulta para que los clientes lo utilicen. El atractivo desde la perspectiva del cliente es claro en este informe sobre el estado de JavaScript . Puede leer la historia de GitHub sobre por qué usa GraphQL.
Soporte fundamental
Spring GraphQL fue concebido como el sucesor del proyecto GraphQL Java Spring del equipo GraphQL Java. Es por eso que el enfoque inicial de nuestra colaboración fue igualar esa funcionalidad, así como integrar GraphQL Java y Spring de la mejor manera posible.
Para ello existe el siguiente soporte fundacional:
- Controladores HTTP: disponibles para Spring MVC y WebFlux, construidos sobre API de punto final funcional de WebMvc y WebFlux .
- Controladores WebSocket: siguiendo el protocolo de graphql-ws con soporte para flujos de suscripción GraphQL.
- Intercepción web: capacidad para interceptar todas las solicitudes de GraphQL, inspeccionar los encabezados HTTP y modificar GraphQL
oExecutionInput.ExecutionResult
- Iniciador de arranque: ponlo todo junto en una aplicación ejecutable.
Seguridad
La URL de un punto final GraphQL es fácil de proteger como de costumbre. Para una seguridad más detallada, las aplicaciones pueden usar las anotaciones de Spring Security en los métodos de recuperación de datos. Esto requiere que el contexto de Spring Security se propague a los métodos de recuperación de datos, y aunque GraphQL Java es neutral para los subprocesos , los componentes en la ejecución pueden ser asíncronos y provocar un cambio de subprocesos.
A través del motor GraphQL, y a los componentes de búsqueda de datos. Esto incluye tanto el
Los ejemplos de webmvc-http y webflux-security demuestran el uso de Spring Security.
Manejo de excepciones
Spring GraphQL permite que las aplicaciones creen múltiples
Pruebas
Puede probar las solicitudes GraphQL utilizando WebTestClient , simplemente envíe y reciba JSON. Sin embargo, los detalles específicos de GraphQL hacen que este enfoque sea más engorroso de lo que debería ser.
Es por eso que Spring GraphQL incluye
- Verifique que las respuestas de GraphQL sean 200 (OK).
- Verifique que no haya errores inesperados en la clave “errores” en la respuesta.
- Decodifica bajo la tecla “datos” en la respuesta.
- Utilice JsonPath para decodificar diferentes partes de la respuesta.
- Probar suscripciones.
Todas las muestras usan
Métrica
Cuando el iniciador
Integración Querydsl
Querydsl proporciona un enfoque flexible y seguro para expresar predicados de consulta. Spring GraphQL se basa en la extensión Spring Data Querydsl para facilitar la creación de un Querydsl respaldado
El ejemplo webmvc-http usa Querydsl.
Schema-First vs Object-First
GraphQL proporciona un lenguaje de esquema que ayuda a los clientes a crear solicitudes válidas, habilita el editor GraphiQL UI, promueve un vocabulario común entre los equipos, etc. También trae a colación el dilema del esquema antiguo frente al desarrollo del objeto primero.
Nuestra opinión es que debería preferirse el desarrollo basado en el esquema. Facilita una conversación entre personas con experiencia técnica y no técnica, ayuda con las herramientas, facilita el seguimiento de los cambios, etc. Tampoco existe un mapeo uno por uno entre el esquema GraphQL y los tipos de Java.
Dicho esto, también hay espacio para la generación de código, para comenzar, para que los clientes creen consultas, etc. Los marcos como Netflix DGS tienen un excelente soporte para esto que se puede usar con Spring GraphQL.
Hoja de ruta y comentarios
La intención es tener un segundo hito antes de SpringOne , del 2 al 3 de septiembre. Ya existe una serie de problemas para M2 en la cola debido a los comentarios iniciales, incluida la compatibilidad con un cliente GraphQL, registros de BatchLoader, carga de archivos y más.
La fase de hitos continuará hasta después de Spring Boot 2.6 en noviembre, momento en el que está programado que el iniciador de arranque se traslade al repositorio de Spring Boot, para su inclusión en Boot 2.7.
Recursos
Para obtener más detalles sobre las funciones de Spring GraphQL, consulte la documentación de referencia .
Los equipos GraphQL Java y Spring se presentarán conjuntamente en la conferencia SpringOne de este año , que vuelve a ser gratuita y en línea por segundo año consecutivo. Por favor, regístrese para asistir a nuestra charla e interactuar con ponentes y asistentes.
FUENTE: https://spring.io/