Od sgcOpenAPI 2024.9.0 parser został ulepszony o następujące nowe funkcje:
- Łączenie specyfikacji: jeśli specyfikacja składa się z wielu schematów, parser może je połączyć w pojedynczy plik specyfikacji.
- Wyjściowe parametry parsera: przy tworzeniu interfejsu pascal, parametry użyte do importu specyfikacji są zapisywane w nagłówku pliku pascal.
- Utworzono nowe zdarzenie dla klienta sgcOpenAPI, OnBeforeRequest, którego można użyć do dostosowania żądania HTTP przed wysłaniem na serwer.
Łączenie specyfikacji
Gdy dokumenty OpenAPI lub JSON Schema stają się ogromne lub powtarzalne, treść można podzielić na wiele dokumentów (w systemie plików, URL-ach, pamięci) i połączyć za pomocą $ref. Te podzielone opisy API można następnie z powrotem złożyć w jeden dokument, w którym $ref wskazują lokalizację wewnętrzną zamiast zewnętrznej. Nazywa się to „łączeniem".
Teraz parser sgcOpenAPI obsługuje łączenie specyfikacji openAPI. Odbywa się to automatycznie przy imporcie pliku.
Podzielona specyfikacja OpenAPI
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'
Połączona specyfikacja
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
Wyjściowe parametry parsera
Plik pascal utworzony ze specyfikacji openAPI zawiera teraz parametry użyte do importu pliku openAPI. Te parametry są tworzone jako komentarze na górze pliku 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
*************************************************************************** }
Zdarzenie OnBeforeRequest
This event is called before the HTTP request is called. Allows to customize the Parameter names, Headers, security... Poniżej znajdziesz an example how to replace the name of some parameters.
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;
