OpenAPI-parser bundle schemas

· Functies

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;