Vanaf sgcOpenAPI 2024.9.0 is de parser verbeterd met de volgende nieuwe functies:
- Bundle Specification: als de specificatie is opgebouwd uit meerdere schemas, kan de parser deze samenvoegen tot één specificatiebestand.
- Output Parser Parameters: bij het aanmaken van de Pascal-interface worden de parameters die zijn gebruikt om de specificaties te importeren in de header van het Pascal-bestand geschreven.
- Er is een nieuw event aangemaakt voor de sgcOpenAPI-client, OnBeforeRequest, dat kan worden gebruikt om het HTTP-verzoek aan te passen voordat het naar de server wordt verzonden.
Bundle Specification
Wanneer OpenAPI- of JSON Schema-documenten enorm of herhalend worden, kan de inhoud worden gesplitst over meerdere documenten (op het bestandssysteem, URL's, ergens in geheugen) en samengevoegd met $ref. Deze gesplitste API-beschrijvingen kunnen vervolgens weer worden samengevoegd tot één document, waarbij $ref naar een interne locatie wijst in plaats van een externe locatie. Dit heet "bundling".
Nu ondersteunt de sgcOpenAPI-parser het bundelen van OpenAPI-specificaties. Dit gebeurt automatisch bij het importeren van een bestand.
Gesplitste OpenAPI-specificatie
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'
Gebundelde specificatie
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
Het Pascal-bestand dat uit de OpenAPI-specificatie wordt aangemaakt, bevat nu de parameters die zijn gebruikt om het OpenAPI-bestand te importeren. Deze parameters worden als commentaar bovenaan het Delphi-bestand geplaatst.
{ ***************************************************************************
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
*************************************************************************** }
OnBeforeRequest-event
Dit event wordt aangeroepen voordat het HTTP-verzoek wordt uitgevoerd. Het maakt het mogelijk de namen van parameters, headers, security enz. aan te passen. Hieronder vind je een voorbeeld van hoe je de namen van bepaalde parameters kunt vervangen.
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;
