À partir de sgcOpenAPI 2024.9.0, le parser a été amélioré avec les nouvelles fonctionnalités suivantes :
- Bundle Specification : si la spécification est construite avec plusieurs schémas, le parser peut les regrouper dans un seul fichier de spécification.
- Output Parser Parameters : lors de la création de l'interface pascal, les paramètres utilisés pour importer les spécifications sont écrits dans l'en-tête du fichier pascal.
- Un nouvel événement a été créé pour le client sgcOpenAPI, OnBeforeRequest, qui peut être utilisé pour personnaliser la requête HTTP avant son envoi au serveur.
Bundle Specification
Lorsque les documents OpenAPI ou JSON Schema deviennent volumineux ou répétitifs, leur contenu peut être réparti dans plusieurs documents (sur le système de fichiers, des URL, en mémoire) et réunis via $ref. Ces descriptions d'API séparées peuvent ensuite être recomposées en un seul document, avec $ref pointant vers un emplacement interne au lieu d'un emplacement externe. C'est ce qu'on appelle le « bundling ».
Le parser sgcOpenAPI prend désormais en charge le bundling des spécifications OpenAPI. Cela se fait automatiquement lors de l'import d'un fichier.
Spécification OpenAPI éclatée
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'
Spécification regroupée
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
Le fichier pascal créé à partir de la spécification OpenAPI contient désormais les paramètres utilisés pour importer le fichier OpenAPI. Ces paramètres sont insérés sous forme de commentaires en haut du fichier 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
*************************************************************************** }
Événement OnBeforeRequest
Cet événement est appelé avant que la requête HTTP ne soit émise. Il permet de personnaliser les noms de paramètres, les en-têtes, la sécurité... Tu trouveras ci-dessous un exemple montrant comment remplacer le nom de certains paramètres.
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;
