ODS API
Descripción general
El ODS APIs are API primero, lo que significa la API las especificaciones son el código fuente definitivo. El código se genera a partir de estas especificaciones cuando es posible, por ejemplo, el andamiaje del controlador de primavera y los tipos de modelo. Esta especificación de primer enfoque nos permitirá hacer uso de Herramientas OpenAPI, no solo para code generation, pero para cosas como pruebas,mock generación de servidor, y API descubrimiento.
Dos APIs están definidos,ODS Ingestion, y ODS Inquiry. Estos APIs son atendidos por el ODS aplicaciones, que actualmente, y por coincidencia, se mapean uno a uno. El ODS Ingestion la aplicación solo admite el ODS Ingestion API, y el ODS Inquiry la aplicación solo admite el ODS Inquiry API.
Estructura del Proyecto
Este proyecto se divide en dos módulos principales,ods-ingestion, y ods-inquiry, cada uno con su propio API especificación, y cada uno documentado por separado en las secciones relevantes.
La intención inicial era que este proyecto contuviera solo el OpenAPI especificaciones y clases de modelo generadas, pero desde entonces ha crecido para incluir el andamiaje del controlador de spring generado, implementaciones del controlador de spring, código del cliente, validación y código de soporte para pruebas. Algunos beneficios de este enfoque son
-
Confianza en que el código del cliente funciona correctamente con el código de back-end de Spring.
-
Bucle de retroalimentación más rápido al desarrollar nuevos API características, o realizando cambios en el cliente y/o el código de back-end
-
Las cosas que cambian juntas se agrupan.
-
La implementación del controlador de primavera forma esencialmente parte de la API, y los cambios que pueden ser disruptivos son más propensos a ser identificados aquí
Code Generation
Este proyecto hace uso de code generation, específicamente openapi-generator, para generar Java código de la OpenAPI especificaciones. Code generation para cada API se documenta por separado, pero generalmente sigue un proceso de dos pasos.
-
Genere los tipos de modelo (POJOs) y empaquete con cualquier código no generado.
-
Genere el andamiaje del controlador de primavera y empaquete con las implementaciones del controlador.
Cada paso se encuentra típicamente dentro de su propio módulo, por ejemplo, un api módulo que contiene los tipos de modelo, y un módulo de spring que contiene el código del controlador.
OpenAPI El generador admite diferentes back-ends de generador. Para Java código el https://openapi-generator.tech/docs/generators/spring[primavera] El generador se utiliza para generar los tipos de modelo y la estructura del controlador de primavera.
El openapi El back-end del generador se utiliza para generar un único JSON especificación tanto para Consulta como para Ingesta. Esto significa la fuente YAML Las especificaciones pueden dividirse en muchos archivos más pequeños para facilitar el desarrollo, mientras que aún se publica un único archivo de especificación para su uso posterior. El código TypeScript se genera a partir de la única especificación de Consulta para el Operational Dashboard.