Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Rest Api .Post İşlemi
#1
Merhabalar;

Bir kurumun test adresleri üzerinden .Post işlemi yapmaya çalışıyorum.


Postman üzerinde girdiğim verileri ek olarak paylaşıyorum.
Authorization:
   
          
Eğer Authorization No Auth olarak seçiliyorsa aşağıdaki gibi Headers bölümünde de Key bilgisi girilebiliyor.
   

Body ve sonuç:
   

İlgili dökümanda IdHTTP.Post işlemini inceledim. (delphi-2010-rest-wp-marco-cantu-2.pdf)
Fakat incelediğim örneklerde burdaki gibi karmaşıklık değil.
Soru1: Authorization kısmını nasıl bildireceğimi toplayamıyorum. Genelde BasicAuthentication kullanılmış ve onu dikkate alarak bunu şekillendiremiyorum, nasıl yapabilirim?
Soru2: Body bölümünde parametreler iç içe ifadeler barındırıyor, TJSONValue tipinde nasıl girebilirim?


Yukarıdaki verdiğim bilgiler dahilinde başarılı olarak Post edip bilgilere nasıl erişeceğim konusunda yardımlarınızı rica ediyorum.

İyi çalışmalar.
Cevapla
#2
RESTClient, RESTRequest ve RESTResponse bileşenleri ile işlemlerinizi gerçekleştirebilirsiniz.
RESTRequest'in params'ında header ve body olarak item'ları ekleyebilirsiniz.
Begin : = end / 2;
Cevapla
#3
(08-12-2020, Saat: 17:04)RAD Coder Adlı Kullanıcıdan Alıntı: RESTClient, RESTRequest ve RESTResponse bileşenleri ile işlemlerinizi gerçekleştirebilirsiniz.
RESTRequest'in params'ında header ve body olarak item'ları ekleyebilirsiniz.

Bileşen eklemeden kod üzerinden yönetmem gerekiyor. Çünkü tek servis yok.
Birden çok kurumun servisi ortak bir yapıda çalışacak.
Örneğin 10 küsür farklı servis için herbirine farklı bileşen eklemem gerekmez mi öneriniz doğrultusunda.
Cevapla
#4
(08-12-2020, Saat: 17:12)abdullahBuyuk Adlı Kullanıcıdan Alıntı:
(08-12-2020, Saat: 17:04)RAD Coder Adlı Kullanıcıdan Alıntı: RESTClient, RESTRequest ve RESTResponse bileşenleri ile işlemlerinizi gerçekleştirebilirsiniz.
RESTRequest'in params'ında header ve body olarak item'ları ekleyebilirsiniz.

Bileşen eklemeden kod üzerinden yönetmem gerekiyor. Çünkü tek servis yok.
Birden çok kurumun servisi ortak bir yapıda çalışacak.
Örneğin 10 küsür farklı servis için herbirine farklı bileşen eklemem gerekmez mi öneriniz doğrultusunda.

Her bir servis için 3 bileşeni ayrı ayrı oluşturmanıza gerek yok. 
Kodla bu bileşenleri dinamik oluşturup, property'lerini set edebilirsiniz. 
RESTClient'in baseURL'ini dinamik olarak değiştirmeniz farklı bir servise bağlanmanız için yeterli olacaktır.
Begin : = end / 2;
Cevapla
#5
(08-12-2020, Saat: 17:27)RAD Coder Adlı Kullanıcıdan Alıntı:
(08-12-2020, Saat: 17:12)abdullahBuyuk Adlı Kullanıcıdan Alıntı: Bileşen eklemeden kod üzerinden yönetmem gerekiyor. Çünkü tek servis yok.
Birden çok kurumun servisi ortak bir yapıda çalışacak.
Örneğin 10 küsür farklı servis için herbirine farklı bileşen eklemem gerekmez mi öneriniz doğrultusunda.

Her bir servis için 3 bileşeni ayrı ayrı oluşturmanıza gerek yok. 
Kodla bu bileşenleri dinamik oluşturup, property'lerini set edebilirsiniz. 
RESTClient'in baseURL'ini dinamik olarak değiştirmeniz farklı bir servise bağlanmanız için yeterli olacaktır.

Deneyeceğim fakat kod ile çözüm mümkünse bunun örneğini de rica edeceğim.
Bilgilendirme için teşekkürler.
Cevapla
#6
Çözüm için imkan sunacaksa sadece bileşen setinden biriyle başlayın, adedin çoğalması endişelenecek son konu kalsın. 

Bileşenden tersine mühendislik ile kod üretirsiniz. 

Postman ile header tipi erişim yerine bir de body tipini seçip deneyin. Aynı parametreler ile başarılı olursa parametreleri alt alta request param ile girersiniz, olmadı bu şekilde olmazsa olmaz diyorsa o zanan request header item girersiniz.

incelemeniz için şimdilik bu linki önerebiliyorum cevabınız, verdiğimiz görseldeki şartlarda burada olmalı.

ek:
firmanın çok güzel (özlediğimşz türden) api dökümantasyonu olduğunu gördüm. 

sizin auth
https://api.intertech.com.tr/api-details#api=account-services&operation=post-getaccountlist


{
   "$type": "ServiceResponseMessage",
   "Data": {
       "$type": "TokenResponseModel",
       "Token": "TOKEN_INFO",
       "TokenType": "Bearer",
       "CustomerNo": 100,
       "BranchCode": 9142,
       "AccountSuffix": 351,
       "Scope": "transfer",
       "ExpirationTime": "2019-05-28T16:41:10"
   }
}


şekşinde bearer imiş. Bu kısmı (token bilgileriyke) request header koyduğunuzda body post işlemleriniz başarılı olur.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#7
(08-12-2020, Saat: 23:07)mrmarman Adlı Kullanıcıdan Alıntı: Çözüm için imkan sunacaksa sadece bileşen setinden biriyle başlayın, adedin çoğalması endişelenecek son konu kalsın. 

Bileşenden tersine mühendislik ile kod üretirsiniz. 

Postman ile header tipi erişim yerine bir de body tipini seçip deneyin. Aynı parametreler ile başarılı olursa parametreleri alt alta request param ile girersiniz, olmadı bu şekilde olmazsa olmaz diyorsa o zanan request header item girersiniz.

incelemeniz için şimdilik bu linki önerebiliyorum cevabınız, verdiğimiz görseldeki şartlarda burada olmalı.

Teşekkürler gelişmeleri paylaşacağım.
Cevapla
#8
Merhaba;

Ulaştığım sonucu paylaşmak istiyorum.
En büyük sorunum oturum açma konusunda Headars kısmına nasıl bu key ve id'yi ekleyeceğimdi.
Aşağıdaki örnekte olduğu gibi key ve Id'yi ekledim.

Not: Ben .net framework ile çalışıyorum, işim gereği nadiren Delphi ile uğraşıyorum.
Json veriyi Serialize - Deserilaize etmeden TJSONValue ve TJSONObject gibi bileşenler ile verinin içerisinde gezebilmek, tüm verileri toplayabilmek hem çok hızlı hem de çok kolay.
    
procedure TForm2.Button1Click(Sender: TObject);
var
 RESTClient: TRESTClient;
 RESTRequest: TRESTRequest;
 RESTResponse: TRESTResponse;

 JsonValue: TJSONValue;
 JsonObject, JsonData: TJSONObject;
 JsonConditions: TJSONArray;
 Str: String;
begin
 RESTClient := TRESTClient.Create('https://api-gateway.intertech.com.tr/BankingApiV01/GetAccountList');
 RESTClient.ContentType := 'application/json';
 RESTClient.Accept := 'text/javascript';
 RESTClient.AcceptEncoding := 'utf-8';

 RESTResponse := TRESTResponse.Create(nil);
 RESTResponse.ContentType := 'application/json';

 RESTRequest := TRESTRequest.Create(nil);
 RESTRequest.Method := TRESTRequestMethod.rmPOST;
 RESTRequest.Response := RESTResponse;
 RESTRequest.Client := RESTClient;
 RESTRequest.AddBody('{"Parameters":[{"CustomerNo":"1***7"}]}', TRESTContentType.ctAPPLICATION_JSON);
 RESTRequest.Params.AddItem('Ocp-Apim-Subscription-Key', 'f293***74422***b447', TRESTRequestParameterKind.pkHTTPHEADER);

 RESTRequest.Execute;

 JsonValue := TJSONObject.ParseJSONValue(RESTResponse.Content);
 JsonObject := JsonValue as TJSONObject;
 JsonData := JsonObject.GetValue('Data') as TJSONObject;
 JsonConditions := JsonData.GetValue('AccountList') as TJSONArray;

 JsonObject := JsonConditions.Items[0] as TJSONObject;
 Str := JsonObject.GetValue('IBANNo').Value;

 JsonObject := JsonConditions.Items[2] as TJSONObject;
 Str := JsonObject.GetValue('BranchCode').Value;
end;

Yardımlarınızdan dolayı teşekkürler.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Rest Request Parametre Ekleme m_ekici 9 506 09-02-2026, Saat: 00:33
Son Yorum: m_ekici
  Rest servis api uygulaması yapma tuna 13 1.390 17-10-2025, Saat: 18:40
Son Yorum: tuna
  TMS Web Core- REST İşlemlerini Nasıl Yapabilirim? kajmerantime 0 441 13-06-2025, Saat: 14:07
Son Yorum: kajmerantime
  Rest Server Hata m_ekici 2 748 09-03-2025, Saat: 13:32
Son Yorum: m_ekici
  Rest Server e gönderilen bilgiler m_ekici 8 1.562 17-02-2025, Saat: 11:43
Son Yorum: m_ekici



Konuyu Okuyanlar: 1 Ziyaretçi