El Parser de OpenAPI
Una clase Delphi nativa que lee especificaciones de OpenAPI 3.0, 3.1 y 3.2, más los documentos Swagger 2.0 que convierte al entrar, y te da acceso programático a cada endpoint, esquema y definición de seguridad.
Una clase Delphi nativa que lee especificaciones de OpenAPI 3.0, 3.1 y 3.2, más los documentos Swagger 2.0 que convierte al entrar, y te da acceso programático a cada endpoint, esquema y definición de seguridad.
No hay nada que arrastrar a un formulario. sgcOpenAPI no registra componentes ni incluye paquete de diseño, así que creas TsgcOpenAPI por código, desde sgcOpenAPI_Classes.pas, y lees en él cualquier especificación.
ReadFromFile recibe una ruta y Read recibe el documento como cadena, mientras que la herramienta de línea de comandos descarga antes una URL. JSON y YAML se leen en local, y un documento Swagger 2.0 también se convierte a OpenAPI 3.0 en local.
Paths, Webhooks, Components, Security, Servers, Tags e Info son propiedades del objeto, así que rutas, operaciones, parámetros, cuerpos de solicitud y respuesta, esquemas y esquemas de seguridad quedan accesibles mediante un modelo fuertemente tipado.
TsgcOpenAPI_Parser_Client_Pascal desciende de la misma clase, de modo que el generador es el lector con un emisor encima. Deriva de él para producir unidades Pascal, o recorre tú mismo el modelo para herramientas y automatizaciones personalizadas.
Un $ref se guarda en el objeto como _Ref en lugar de insertarse, así que el modelo no llega desreferenciado. Las referencias a archivos externos y a URL las trae antes TsgcOpenAPI_Bundle, que las inserta, recuerda lo ya visitado y se detiene en una profundidad máxima.
AllOf, OneOf y AnyOf se leen en el objeto de esquema, junto con Discriminator y su mapeo, y el generador de código los aplana en clases Pascal.
Warnings recoge todo lo que el lector no pudo honrar, desde un objeto info ausente hasta una palabra clave que el generador ignora, y se vacía en cada lectura. La línea y la columna se indican para un documento YAML que no se puede parsear.