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
Ö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');
auth2Code: Tek sayfalık uygulamalar, web uygulamaları ve yerel olarak yüklenen uygulamalar dahil olmak üzere uygulama türlerinin çoğunda kimlik doğrulama ve yetkilendirme gerçekleştirmek için kullanılır. Akış, uygulamaların güvenli kaynaklara erişmek için kullanılabilen access_token'ları güvenli bir şekilde edinmesini, ayrıca ek access_token'lar almak için refresh token'ları ve oturum açan kullanıcı için ID token'larını edinmesini sağlar.
auth2ClientCredentials: Bu grant türü, genellikle bir kullanıcıyla anında etkileşim olmadan arka planda çalışması gereken sunucudan sunucuya etkileşimler için kullanılır. Bu tür uygulamalar genellikle daemon veya service account olarak adlandırılır.
Şunun hakkında daha fazla bilgi: OAuth2.
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
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:
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.
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.
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.
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.
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.
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.
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