TsgcOpenAPI_Client is een niet-visueel component dat de belangrijkste methoden en eigenschappen inkapselt om HTTP-verzoeken te maken vanuit een OpenAPI-specificatie.
Every OpenAPI interface created with sgcOpenAPI Parser has 2 methods
Voorbeeld
Gebruik de Abstractapi om de localisatie van een IP-adres op te halen.
GetOpenAPIClient.Retrieve_the_location_of_an_IP_address('your api', '80.258.15.2');
auth2Code: Wordt gebruikt voor authenticatie en autorisatie in de meeste toepassingstypes, waaronder single-page applications, webtoepassingen en native geïnstalleerde toepassingen. De stroom stelt apps in staat veilig access_tokens te verkrijgen voor toegang tot beveiligde resources, evenals refresh_tokens om aanvullende access_tokens te verkrijgen, en ID-tokens voor de ingelogde gebruiker.
auth2ClientCredentials: Dit type grant wordt vaak gebruikt voor server-naar-server-interacties die op de achtergrond moeten worden uitgevoerd, zonder directe interactie met een gebruiker. Dit soort toepassingen wordt vaak daemons of serviceaccounts genoemd.
Lees meer over OAuth2.
Maakt het mogelijk om te configureren hoe verbinding te maken met beveiligde SSL/TLS-servers via het HTTP/1-protocol
De gegenereerde clients verifiëren standaard het certificaat van de server, eerdere versies deden dat niet. Het vertrouwen komt van de standaard verificatiepaden van OpenSSL, stel daarom op een machine waar geen CA-opslag is geconfigureerd TLSOptions.RootCertFile in op het bestand met de vertrouwde basiscertificaten. Om verbinding te maken met een zelfondertekend endpoint of een testendpoint stelt u TLSOptions.VerifyCertificate := False in.
ALPNProtocols: lijst van de ALPN-protocollen die naar de server worden verzonden.
RootCertFile: pad naar het basiscertificaatbestand.
CertFile: pad naar het certificaatbestand.
KeyFile: pad naar het certificaatsleutelbestand.
Password: als het certificaat met een wachtwoord is beveiligd, stelt u dit hier in.
VerifyCertificate: als het certificaat moet worden geverifieerd, schakel deze eigenschap in. De OpenAPI-client schakelt deze standaard in, stel deze in op False om een zelfondertekend certificaat te accepteren.
VerifyDepth: is een Integer-eigenschap die het maximale aantal koppelingen vertegenwoordigt dat is toegestaan bij verificatie van het X.509-certificaat.
Version: standaard gebruikt TLS 1.0; als de server een hogere TLS-versie vereist, kan hier worden geselecteerd.
IOHandler: selecteer welke bibliotheek u wilt gebruiken voor verbinding via TLS.
iohOpenSSL: gebruikt de OpenSSL-bibliotheek en is de standaard voor Indy-componenten. Vereist het deployen van de openssl-bibliotheken voor win32/win64.
iohSChannel: gebruikt Secure Channel, een beveiligingsprotocol dat door Microsoft voor Windows is geïmplementeerd; hiervoor hoeven geen OpenSSL-bibliotheken te worden geïmplementeerd. Werkt alleen in Windows 32/64 bits.
OpenSSL_Options: configuration of the openSSL libraries.
APIVersion: maakt het mogelijk te definiëren welke OpenSSL API wordt gebruikt.
oslAPI_1_0: gebruikt API 1.0 OpenSSL, de meest recente versie die door Indy wordt ondersteund
oslAPI_1_1: maakt gebruik van OpenSSL API 1.1; vereist onze aangepaste Indy-bibliotheek en biedt de mogelijkheid OpenSSL 1.1.1-bibliotheken te gebruiken (met TLS 1.3-ondersteuning).
oslAPI_3_0: gebruikt API 3.0 OpenSSL, vereist onze aangepaste Indy-bibliotheek en staat het gebruik van OpenSSL 3.0.0-bibliotheken toe (met TLS 1.3-ondersteuning).
LibPath: hier kunt u configureren waar de openSSL-bibliotheken zich bevinden
oslpNone: dit is de standaard; de openSSL-bibliotheken moeten zich in dezelfde map bevinden als het binaire bestand of in een bekend pad.
oslpDefaultFolder: stelt automatisch het openSSL-pad in waar de bibliotheken zich moeten bevinden voor alle IDE-platformpersoonlijkheden.
oslpCustomFolder: als deze optie is geselecteerd, definieer dan het volledige pad in de eigenschap LibPathCustom.
LibPathCustom: wanneer LibPath = oslpCustomFolder, definieer hier het volledige pad waar de openSSL-bibliotheken zich bevinden.
UnixSymLinks: het laden van symbolische koppelingen onder Unix-systemen in- of uitschakelen (standaard ingeschakeld, behalve onder OSX64):
oslsSymLinksDefault: standaard ingeschakeld, behalve onder OSX64 (na MacOS Monterey mislukt het laden van de bibliotheek zonder versie.).
oslsSymLinksLoadFirst: Laad SymLinks en doe dit voor het laden van de versiebibliotheken.
oslsSymLinksLoad: Laad SymLinks nadat geprobeerd is de versie-bibliotheken te laden.
oslsSymLinksDontLoad: laadt de SymLinks niet.
SChannel_Options: hiermee kunt u een certificaat uit de Windows-certificaatopslag gebruiken.
CertHash: is de hash van het certificaat. U kunt de certificaathash vinden door een dir-opdracht uit te voeren in PowerShell.
CipherList: hier kunt u instellen welke Ciphers worden gebruikt (gescheiden door ":"). Voorbeeld: CALG_AES_256:CALG_AES_128
CertStoreName: de opslagnaam waar het certificaat is opgeslagen. Selecteer een van de onderstaande opties:
scsnMY (de standaard)
scsnCA
scsnRoot
scsnTrust
CertStorePath: het opslagpad waar het certificaat is opgeslagen. Selecteer een van de onderstaande opties:
scspStoreCurrentUser (de standaard)
scspStoreLocalMachine
Gebruik deze eigenschap om verbindingen via een proxy te configureren.
Enabled: stel in op true om proxyverbindingen in te schakelen.
Host: Proxyseveradres
Port: Proxy server port
UserName/Password: Authenticatie om verbinding te maken met de proxy, alleen indien vereist.
ProxyType: de volgende proxy's worden ondersteund:
Als de eigenschap Log is ingeschakeld, worden socketberichten opgeslagen in een opgegeven logbestand, wat nuttig is voor foutopsporing.
Log: schakel in als u de HTTP-verzoeken wilt opslaan in een tekstbestand.
LogFileName: full path to the filename.
Overige eigenschappen die kunnen worden gebruikt om de OpenAPI-client aan te passen:
EncodeBodyAsUTF8: indien ingeschakeld, wordt de request body gecodeerd als UTF-8 (standaard true). Een JSON-document is UTF-8 volgens RFC 8259, een body die als ANSI is gecodeerd verminkt elk teken buiten het ASCII-bereik.
De klassen (DTO's) die vanuit de specificatie worden gegenereerd, bieden de volgende eigenschappen om aan te passen hoe ze naar JSON worden geschreven:
JSONIgnoreEmptyStrings: standaard is dit False, dus een veld met een lege tekenreeks wordt geschreven als "field": "". Een lege tekenreeks is een waarde en de server kan die niet onderscheiden van een veld dat nooit is ingesteld. Stel dit in op True om de lege tekenreeksen weg te laten uit de JSON, wat eerdere versies deden.
JSONIgnoreNullValues: standaard is dit True, dus een null wordt niet naar de JSON geschreven. De nulls worden uitsluitend door deze eigenschap bepaald, ze staat los van JSONIgnoreEmptyStrings. Stel dit in op False om een expliciete null te schrijven, wat een JSON Merge Patch (RFC 7386) nodig heeft om een lid te verwijderen.
Het resultaat van een verzoek wordt geretourneerd in een TsgcOpenAPIResponse-object.
ResponseStream: stream waarin de body van de respons wordt geschreven, wijs uw eigen stream toe om een download er rechtstreeks in op te slaan.
OwnsResponseStream: een door de aanroeper toegewezen stream wordt niet meer samen met de respons vernietigd, de aanroeper behoudt het eigenaarschap. Stel dit in op True om het vorige gedrag te herstellen en de respons de stream te laten vrijgeven.
Een parameter die in de specificatie is gedeclareerd als in: cookie wordt ondersteund. Alle cookie-parameters van een verzoek worden samen verzonden in één enkele Cookie-header, zoals RFC 6265 vereist.
Standaard voert de OpenAPI-client verzoeken synchroon uit. Gebruik de asynchrone API om een verzoek op een achtergrondthread uit te voeren en via gebeurtenissen op de hoogte te worden gebracht, wat de gebruikersinterface responsief houdt en het mogelijk maakt het verzoek te annuleren.
HTTP_REQUEST_Async: voert het verzoek uit op een werkthread. De client neemt het eigenaarschap van het request-object over.
CancelAsync: annuleert het lopende verzoek.
SynchronizeEvents: wanneer True worden de gebeurtenissen doorgestuurd naar de hoofdthread. Standaard is dit False en worden de gebeurtenissen op de werkthread geactiveerd.
Het resultaat wordt geleverd via de volgende gebeurtenissen:
OnResponse: het verzoek is voltooid, de respons wordt als parameter doorgegeven.
OnError: het verzoek is mislukt, de uitzondering wordt als parameter doorgegeven.
OnCancel: het verzoek is geannuleerd door CancelAsync.
De client kan niet worden vrijgegeven vanuit zijn eigen OnResponse, OnError of OnCancel-gebeurtenishandler. Het vernietigen wacht op de werkthread, en dat is precies de thread die de handler uitvoert, waardoor de applicatie zou vastlopen. In plaats daarvan wordt een duidelijke fout opgeworpen, geef de client vrij zodra de gebeurtenishandler is geretourneerd.
Hieronder vindt u de lijst met gebeurtenissen die u kunt verwerken bij gebruik van de OpenAPI Client.
OnBeforeRequest
Dit event wordt aangeroepen voordat het HTTP-verzoek wordt aangeroepen. Maakt het mogelijk de parameternamen, headers, beveiliging... aan te passen. Hieronder vindt u een voorbeeld van hoe u de naam van sommige parameters vervangt.
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;
OnUpload
Dit event wordt aangeroepen wanneer een bestand wordt geüpload; u kunt dit event gebruiken om de voortgang van de upload bij te houden.
OnDownload
Deze gebeurtenis wordt aangeroepen wanneer een bestand is gedownload; u kunt deze gebruiken om de voortgang van de download bij te houden.
OnSSLVerifyPeer
Als certificaatverificatie is ingeschakeld, kunt u in deze gebeurtenis het servercertificaat verifiëren en beslissen of u het wilt accepteren.
OnSSLGetHandler
Deze gebeurtenis wordt gegenereerd voordat de SSL-handler wordt aangemaakt; u kunt hier uw eigen SSL-handler aanmaken (die moet worden geërfd van TIdServerIOHandlerSSLBase of TIdIOHandlerSSLBase) en de benodigde eigenschappen instellen.
OnSSLAfterCreateHandler
Als er geen aangepast SSL-object is aangemaakt, wordt er standaard een aangemaakt met de OpenSSL-handler. U kunt de eigenschappen van de SSL-handler openen en aanpassen indien nodig