De OpenAPI-parser
Een native Delphi-klasse die OpenAPI 3.0-, 3.1- en 3.2-specificaties leest, plus Swagger 2.0-documenten die bij het inlezen worden omgezet, en je programmatisch toegang geeft tot elk endpoint, schema en elke security-definitie.
Een native Delphi-klasse die OpenAPI 3.0-, 3.1- en 3.2-specificaties leest, plus Swagger 2.0-documenten die bij het inlezen worden omgezet, en je programmatisch toegang geeft tot elk endpoint, schema en elke security-definitie.
Er is niets om op een formulier te plaatsen. sgcOpenAPI registreert geen componenten en levert geen designtime-package, dus maak je TsgcOpenAPI in code aan, uit sgcOpenAPI_Classes.pas, en lees je er elke specificatie in.
ReadFromFile neemt een pad en Read neemt het document als string, terwijl de commandoregeltool een URL eerst downloadt. JSON en YAML worden allebei lokaal gelezen, en een Swagger 2.0-document wordt eveneens lokaal omgezet naar OpenAPI 3.0.
Paths, Webhooks, Components, Security, Servers, Tags en Info zijn properties op het object, zodat paths, operations, parameters, request- en response-bodies, schema's en security-schemes allemaal bereikbaar zijn via een sterk getypeerd model.
TsgcOpenAPI_Parser_Client_Pascal stamt van dezelfde klasse af, dus de generator is de lezer met een emitter erbovenop. Erf ervan om Pascal-units te produceren, of loop zelf door het model voor custom tooling en automatisering.
Een $ref blijft als _Ref op het object staan in plaats van te worden ingevoegd, dus het model komt niet gedereferenceerd binnen. Externe bestands- en URL-referenties haalt TsgcOpenAPI_Bundle vooraf op, voegt ze in, onthoudt wat het al bezocht heeft en stopt bij een maximale diepte.
AllOf, OneOf en AnyOf worden in het schema-object gelezen, samen met Discriminator en zijn mapping, en de codegenerator plat ze af tot Pascal-klassen.
Warnings verzamelt alles wat de lezer niet kon honoreren, van een ontbrekend info-object tot een keyword dat de generator negeert, en wordt bij elke leesbeurt geleegd. Regel en kolom worden gemeld voor een YAML-document dat niet parseert.