Desde sgcOpenAPI 2024.9.0 el parser se ha mejorado con las siguientes funcionalidades nuevas:
- Bundle Specification: si la especificación se construye con varios esquemas, el parser puede agruparlos en un único archivo de especificación.
- Output Parser Parameters: al crear la interfaz Pascal, los parámetros usados para importar las especificaciones se escriben en la cabecera del archivo Pascal.
- Se ha creado un nuevo evento para el cliente sgcOpenAPI, OnBeforeRequest, que se puede usar para personalizar la petición HTTP antes de enviarla al servidor.
Bundle Specification
Cuando los documentos OpenAPI o JSON Schema se vuelven enormes o repetitivos, el contenido se puede dividir en varios documentos (en el sistema de archivos, URLs, en memoria) y unirlos mediante $ref. Estas descripciones de API divididas se pueden volver a unir en un único documento, con $ref apuntando a una ubicación interna en lugar de externa. Esto se llama "bundling".
Ahora el sgcOpenAPI Parser soporta hacer bundle de especificaciones openAPI. Se realiza automáticamente al importar un archivo.
Especificación OpenAPI dividida
openapi: 3.0.0
info:
title: My API
version: 1.0.0
paths:
/things:
get:
responses:
'200':
description: 'OK'
content:
application/json:
schema:
properties:
data:
type: array
items:
$ref: './schemas/thing.yaml'
/things/{id}:
get:
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: 'OK'
content:
application/json:
schema:
$ref: './schemas/thing.yaml'
Especificación con bundle
openapi: 3.0.0
info:
title: My API
version: 1.0.0
paths:
/things:
get:
responses:
'200':
description: OK
content:
application/json:
schema:
properties:
data:
type: array
items:
$ref: '#/paths/~1things~1%7Bid%7D/get/responses/200/content/application~1json/schema'
'/things/{id}':
get:
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
type:
type: string
enum:
- type1
- type2
Output Parser Parameters
El archivo Pascal creado a partir de la especificación openAPI ahora contiene los parámetros usados para importar el archivo openAPI. Estos parámetros se crean como comentarios en la parte superior del archivo Delphi.
{ ***************************************************************************
sgcOpenAPI component
written by eSeGeCe
copyright © 2024
Email : info@esegece.com
Web : http://www.esegece.com
Source: D:\Downloads\ICAR-ADE-1\url-schemes\registrationURLScheme.json
Parsed At: 2024-10-02 10:12:18
Options: [Generate Classes] [Enable Classes] [Documentation]
Authentication: Token
Method Name: OperationId
Base URL: https://spec.openapi.com
*************************************************************************** }
Evento OnBeforeRequest
Este evento se llama antes de que se realice la petición HTTP. Permite personalizar los nombres de los parámetros, las cabeceras, la seguridad... A continuación encontrarás un ejemplo de cómo reemplazar el nombre de algunos parámetros.
procedure OnBeforeRequestEvent(Sender: TObject; const aRequest: TsgcOpenAPIRequest);
var
i: Integer;
oParameter: TsgcOpenAPIParameter;
begin
for i := 0 to aRequest.Parameters.Count - 1 do
begin
oParameter := aRequest.Parameters[i];
if oParameter._Name = 'meta-modified-from' then
oParameter._name := 'eventDateTime-from';
if oParameter._Name = 'meta-modified-to' then
oParameter._name := 'eventDateTime-to';
end;
end;
