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 Spring 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, generación de servidores simulados, 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 en el código de back-end

  • Las cosas que cambian juntas se agrupan.

  • La implementación del controlador de Spring 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. Generación de código para cada API se documenta por separado, pero generalmente sigue un proceso de dos pasos.

  1. Genere los tipos de modelo (POJOs) y empaquete con cualquier código no generado.

  2. Genere el andamiaje del controlador de Spring y empaquete con las implementaciones del controlador.

Cada paso se encuentra típicamente dentro de su propio módulo, por ejemplo, un módulo de API que contiene los tipos de modelo, y un módulo de Spring que contiene el código del controlador.

OpenAPIEl generador admite diferentes back-ends de generador. Para Java código el Spring el generador se utiliza, generando los tipos de modelo y el andamiaje del controlador de Spring.

El openapi el generador de back-end 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 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.