OpenAPI | İstemci

TsgcOpenAPI_Client, bir OpenAPI belirtiminden HTTP istekleri yapmak için ana yöntemleri ve özellikleri kapsayan görsel olmayan bir bileşendir.

 

sgcOpenAPI Parser ile oluşturulan her OpenAPI arayüzünün 2 yöntemi vardır

 

  1. GetOpenAPIClient: ana sınıfın bir örneğini döndüren bir singleton işlevdir, yoksa otomatik olarak oluşturur.
  2. FreeOpenAPIClient: oluşturulmuşsa ana sınıfı serbest bırakır.

 

Örnek

Bir IP Adresinin yerelleştirmesini almak için Abstractapi'yi kullanın.


GetOpenAPIClient.Retrieve_the_location_of_an_IP_address('your api', '80.258.15.2');

 

 

Authentication

 

TLSOptions

HTTP/1 protokolünü kullanarak güvenli SSL/TLS sunucularına nasıl bağlanılacağını yapılandırmanıza olanak tanır

 

Oluşturulan istemciler varsayılan olarak sunucunun sertifikasını doğrular, önceki sürümler doğrulamıyordu. Güven, OpenSSL varsayılan doğrulama yollarından gelir, bu nedenle hiçbir CA deposunun yapılandırılmadığı bir makinede TLSOptions.RootCertFile özelliğini güvenilen kök sertifikaları içeren dosyaya ayarlayın. Kendinden imzalı veya test amaçlı bir uç noktaya bağlanmak için TLSOptions.VerifyCertificate := False olarak ayarlayın.

 

ALPNProtocols: sunucuya gönderilecek ALPN protokollerinin listesi.

RootCertFile: kök sertifika dosyasının yolu.

CertFile: sertifika dosyasının yolu.

KeyFile: sertifika anahtar dosyasının yolu.

Password: sertifika bir parolayla korunuyorsa, buraya ayarlayın.

VerifyCertificate: sertifikanın doğrulanması gerekiyorsa, bu özelliği etkinleştirin. OpenAPI istemcisi bunu varsayılan olarak etkinleştirir, kendinden imzalı bir sertifikayı kabul etmek için False olarak ayarlayın.

VerifyDepth: X.509 sertifikası için doğrulama yapıldığında izin verilen maksimum bağlantı sayısını temsil eden bir Integer özelliğidir.

Version: varsayılan olarak TLS 1.0 kullanır, sunucu daha yüksek bir TLS sürümü gerektiriyorsa, burada seçilebilir.

IOHandler: TLS kullanarak bağlantı için hangi kütüphaneyi kullanacağınızı seçin.

iohOpenSSL: OpenSSL kütüphanesini kullanır ve Indy bileşenleri için varsayılandır. win32/win64 için openssl kütüphanelerinin dağıtılmasını gerektirir.

iohSChannel: Microsoft tarafından Windows için uygulanan bir güvenlik protokolü olan Secure Channel'ı kullanır, openssl kütüphanelerini dağıtmayı gerektirmez. Yalnızca Windows 32/64 bit'te çalışır.

OpenSSL_Options: openSSL kütüphanelerinin yapılandırması.

APIVersion: hangi OpenSSL API'sinin kullanılacağını tanımlamaya olanak tanır.

oslAPI_1_0: API 1.0 OpenSSL kullanır, Indy tarafından desteklenen en son sürümdür

oslAPI_1_1: API 1.1 OpenSSL kullanır, özel Indy kütüphanemizi gerektirir ve OpenSSL 1.1.1 kütüphanelerinin (TLS 1.3 desteğiyle) kullanılmasına izin verir.

oslAPI_3_0: API 3.0 OpenSSL kullanır, özel Indy kütüphanemizi gerektirir ve OpenSSL 3.0.0 kütüphanelerinin (TLS 1.3 desteğiyle) kullanılmasına olanak tanır.

LibPath: burada openSSL kütüphanelerinin nerede bulunduğunu yapılandırabilirsiniz

oslpNone: bu varsayılandır, OpenSSL kitaplıkları ikili dosyanın bulunduğu klasörde veya bilinen bir yolda olmalıdır.

oslpDefaultFolder: tüm IDE kişilikleri için kütüphanelerin bulunması gereken openSSL yolunu otomatik olarak ayarlar.

oslpCustomFolder: seçilen seçenek buysa, tam yolu LibPathCustom özelliğinde tanımlayın.

LibPathCustom: LibPath = oslpCustomFolder olduğunda openSSL kütüphanelerinin bulunduğu tam yolu burada tanımlayın.

UnixSymLinks: Unix sistemlerinde SymLinks yüklemesini etkinleştirin veya devre dışı bırakın (varsayılan olarak etkindir, OSX64 hariç):

oslsSymLinksDefault: OSX64 dışında varsayılan olarak etkindir (MacOS Monterey'den sonra kütüphaneyi sürüm olmadan yüklemeye çalışırken başarısız olur).

oslsSymLinksLoadFirst: SymLinks'i yükle ve bunu sürüm kitaplıklarını yüklemeyi denemeden önce yap.

oslsSymLinksLoad: Sürüm kütüphanelerini yüklemeyi denedikten sonra SymLinks'i yükle.

oslsSymLinksDontLoad: SymLink'leri yükleme.

SChannel_Options: Windows Sertifika Deposundan bir sertifika kullanmanıza olanak tanır.

CertHash: sertifika Hash değeridir. Sertifika Hash değerini powershell'de bir dir komutu çalıştırarak bulabilirsiniz.

CipherList: burada hangi Cipher'ların kullanılacağını ayarlayabilirsiniz (":" ile ayrılmış). Örnek: CALG_AES_256:CALG_AES_128

CertStoreName: sertifikanın saklandığı depo adı. Aşağıdakilerden birini seçin:

scsnMY (varsayılan)

scsnCA

scsnRoot

scsnTrust

CertStorePath: sertifikanın saklandığı depo yolu. Aşağıdakilerden birini seçin:

scspStoreCurrentUser (varsayılan)

scspStoreLocalMachine

 

 

 

Proxy Seçenekleri

Bağlantıları bir proxy aracılığıyla yapılandırmak için bu özelliği kullanın.

 

Enabled: proxy bağlantılarını etkinleştirmek için true olarak ayarlayın.

Host: Proxy sunucusu adresi

Port: Proxy sunucusu portu

UserName/Password: Yalnızca gerekiyorsa, proxy'ye bağlanmak için Kimlik Doğrulama.

ProxyType: aşağıdaki proxy'ler desteklenir:

Günlük

Log özelliği etkinleştirilirse, soket mesajlarını belirtilen bir günlük dosyasına kaydeder, hata ayıklama için yararlıdır.

 

Log: HTTP isteklerini bir metin dosyasına kaydetmek istiyorsanız etkinleştirin.

LogFileName: dosya adının tam yolu.

 

Özellikler

OpenAPI istemcisini özelleştirmek için kullanılabilecek diğer özellikler:

 

EncodeBodyAsUTF8: etkinleştirilirse, istek gövdesi UTF-8 olarak kodlanır (varsayılan olarak true). RFC 8259 uyarınca bir JSON belgesi UTF-8'dir, ANSI olarak kodlanan bir gövde ASCII aralığının dışındaki her karakteri bozar.

 

JSON Serileştirme

Belirtimden oluşturulan sınıflar (DTO'lar), JSON'a nasıl yazıldıklarını özelleştirmek için aşağıdaki özellikleri sunar:

 

JSONIgnoreEmptyStrings: varsayılan olarak False'tur, bu nedenle boş bir dize tutan bir alan "field": "" olarak yazılır. Boş bir dize bir değerdir ve sunucu bunu hiç ayarlanmamış bir alandan ayırt edemez. Boş dizeleri JSON'un dışında bırakmak için True olarak ayarlayın, önceki sürümlerin yaptığı da buydu.

JSONIgnoreNullValues: varsayılan olarak True'dur, bu nedenle bir null JSON'a yazılmaz. Null değerler yalnızca bu özellik tarafından denetlenir, JSONIgnoreEmptyStrings özelliğinden bağımsızdır. Açık bir null yazmak için False olarak ayarlayın, bir JSON Merge Patch (RFC 7386) bir üyeyi silmek için buna ihtiyaç duyar.

 

Yanıt

Bir isteğin sonucu bir TsgcOpenAPIResponse nesnesinde döndürülür.

 

ResponseStream: yanıtın gövdesinin yazıldığı akış, bir indirmeyi doğrudan kaydetmek için kendi akışınızı atayın.

OwnsResponseStream: çağıran tarafından atanan bir akış artık yanıtla birlikte yok edilmez, sahiplik çağırana aittir. Önceki davranışı geri getirmek ve akışı yanıtın serbest bırakmasını sağlamak için True olarak ayarlayın.

 

Çerez Parametreleri

Belirtimde in: cookie olarak bildirilen bir parametre desteklenir. Bir isteğin tüm çerez parametreleri, RFC 6265'in gerektirdiği gibi tek bir Cookie başlığında birlikte gönderilir.

 

Asynchronous Requests

Varsayılan olarak OpenAPI istemcisi istekleri eşzamanlı olarak yürütür. Bir isteği arka plan iş parçacığında çalıştırmak ve olaylar aracılığıyla bilgilendirilmek için eşzamansız API'yi kullanın; bu, kullanıcı arayüzünü duyarlı tutar ve isteğin iptal edilmesine olanak tanır.

HTTP_REQUEST_Async: isteği bir worker thread üzerinde çalıştırır. İstemci, istek nesnesinin sahipliğini üstlenir.

CancelAsync: devam eden isteği iptal eder.

SynchronizeEvents: True olduğunda olaylar ana iş parçacığına (main thread) yönlendirilir. Varsayılan olarak False'tur ve olaylar worker thread'de tetiklenir.

Sonuç aşağıdaki olaylar aracılığıyla iletilir:

OnResponse: istek tamamlandı, yanıt bir parametre olarak geçirilir.

OnError: istek başarısız oldu, istisna bir parametre olarak geçirilir.

OnCancel: istek CancelAsync tarafından iptal edildi.

İstemci, kendi OnResponse, OnError veya OnCancel olay işleyicisinin içinden serbest bırakılamaz. Onu yok etmek, işleyiciyi çalıştıran iş parçacığının ta kendisi olan worker thread'in bitmesini bekler, bu yüzden uygulama askıda kalır. Bunun yerine açık bir hata yükseltilir, istemciyi olay işleyicisi geri döndükten sonra serbest bırakın.

Olaylar

OpenAPI İstemcisini kullanırken işleyebileceğiniz olayların listesini aşağıda bulun.

 

 

OnBeforeRequest

 

Bu olay, HTTP isteği çağrılmadan önce çağrılır. Parametre adlarını, Başlıkları, güvenliği özelleştirmeye olanak tanır... Bazı parametrelerin adının nasıl değiştirileceğine dair bir örnek aşağıda bulunmaktadır.

 


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

 

Bu olay, bir dosya yüklendiğinde çağrılır, yüklemenin ilerlemesini bilmek için bu olayı kullanabilirsiniz.

 

OnDownload

 

Bu olay bir dosya indirildiğinde çağrılır, indirmenin ilerlemesini bilmek için bu olayı kullanabilirsiniz.

 

OnSSLVerifyPeer

 

Sertifika doğrulaması etkinse, bu olayda sunucu sertifikasını doğrulayabilir ve kabul edip etmemeye karar verebilirsiniz.

 

OnSSLGetHandler

 

Bu olay SSL işleyici oluşturulmadan önce tetiklenir, burada kendi SSL İşleyicinizi oluşturabilir (TIdServerIOHandlerSSLBase veya TIdIOHandlerSSLBase'den miras alınması gerekir) ve gereken özellikleri ayarlayabilirsiniz

 

OnSSLAfterCreateHandler

 

Özel bir SSL nesnesi oluşturulmamışsa, varsayılan olarak OpenSSL işleyicisini kullanarak oluşturur. SSL İşleyici özelliklerine erişebilir ve gerekirse değiştirebilirsiniz