Clomosy | Forum Ana Sayfa
Forum Anasayfa Forum Anasayfa > Genel Programlama > Clomosy ile değişken kullanımı
  Aktif Konular Aktif Konular RSS - CLRest Kullanımı
  SSS SSS  Forumu Ara   Etkinlikler   Kayıt Ol Kayıt Ol  Giriş Giriş

Clomosy Resmi Forum Sitesidir. Amacımız kullanıcılarımıza, iş ortaklarımıza, danışmanlara, yazılımcılara programlarımız hakkında destek ve bilgi vermektir.

CLRest Kullanımı

 Yanıt Yaz Yanıt Yaz Sayfa  12>
Yazar
Mesaj
  Konu Arama Konu Arama  Topic Seçenekleri Topic Seçenekleri
M-Guney Açılır Kutu İzle
Kıdemli Üye
Kıdemli Üye


Kayıt Tarihi: 16 Eylül 2025
Konum: Konya, Meram, K
Durum: Aktif
Puanlar: 102
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı M-Guney Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: CLRest Kullanımı
    Gönderim Zamanı: Dün Saat 11:12
Unitler arasında temiz ve performanslı bir şekilde nasıl TCLResti kullanabilirim 30 dan fazla Api bağlantım var ve performans yükü bindirmek istemiyorum.https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">
Yukarı Dön
Emr.Erkmn Açılır Kutu İzle
Moderatör
Moderatör


Kayıt Tarihi: 28 Şubat 2025
Durum: Aktif Değil
Puanlar: 406
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Emr.Erkmn Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: Dün Saat 11:19
Merhaba Güney, 
Uygulamamız da bir tame birim oluşturalım yani kütüphane oluşturalım (uApı.pas ya da uApiLib). 
Bu yeni unit uygulamanın API yöneticisi olacak
Yeni unitte oluşturalın prosedürile daha yüksek bir performan sergileyebiliriz


https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">
Yukarı Dön
M-Guney Açılır Kutu İzle
Kıdemli Üye
Kıdemli Üye


Kayıt Tarihi: 16 Eylül 2025
Konum: Konya, Meram, K
Durum: Aktif
Puanlar: 102
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı M-Guney Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: Dün Saat 11:21
uDataLib oluşturdum

void GetConnectDB(TCRest : TCLRest)
{
  try
    if (Clomosy.AppPlatform == 0) // is Windows
    {
      TCRest.BaseURL = 'http://MY-API/';
    }else {
      TCRest.BaseURL = 'https://MY-URL.com.tr/';
    }
    //TCRest.AddHeader('Authorization','Bearer ' + Clomosy.GlobalVariableString);
    TCRest.Execute;
    TCRest.ClearParams;
    TCRest.ClearBody;
  except
  ShowMessage('Exception Class: '+LastExceptionClassName+' Exception Message: '+LastExceptionMessage);
  }
}

Yukarı Dön
M-Guney Açılır Kutu İzle
Kıdemli Üye
Kıdemli Üye


Kayıt Tarihi: 16 Eylül 2025
Konum: Konya, Meram, K
Durum: Aktif
Puanlar: 102
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı M-Guney Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: Dün Saat 11:22
Sonrasında alttaki şekilde çağırdım 
void GetUserPrivilegesV
{
  TableName = TClProButton(MainForm.Clsender).clTagStr;
  OrderID = TClProButton(MainForm.Clsender).clTagInt;
 //TCRest.ClearParams;
  uDataLib.GetConnectDB(TCRest);
  TCRest.Resource = 'privileges';
  TCRest.Accept = 'application/json';
  TCRest.Method = rmGET;
  
  TCRest.AddHeader('Authorization','Bearer ' + Clomosy.GlobalVariableString);
  TCRest.OnCompleted = 'GetUserPrivilegesCompletedV';
  TCRest.ExecuteAsync;
  TCRest.ClearBody;
  
  
}
https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">
Yukarı Dön
M-Guney Açılır Kutu İzle
Kıdemli Üye
Kıdemli Üye


Kayıt Tarihi: 16 Eylül 2025
Konum: Konya, Meram, K
Durum: Aktif
Puanlar: 102
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı M-Guney Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: Dün Saat 11:23
Fakat bir alt unitte ise hem geç çalışıyor hem de ne kadar istesem de showMessage ile tcl.response u gösteremiyorum

void GetOrderDetailsCompletedV
var
  jsonResponse, NoteString: String;
  Arr : TCLJSONArray;
{
  ShowMessage('query is finished');
  jsonResponse = TCRest.Response;
  ShowMessage('Json Response: '+ jsonResponse);
  Arr = TCLJSONArray.Create;
Arr = TCLJSONArray.CreateFromJSON(jsonResponse);
  if(jsonResponse == ''){
    ShowMessage('Sipariş Detaylar listesi boş herhangi bir sipariş yok.');
  }else{
    noteMemo.Text = Clomosy.CLParseJSON(jsonResponse, '0.note');
    AmountValueLbl.Text = Clomosy.CLParseJSON(jsonResponse, '0.total_price') + 'TL';
    DetailsPnlV(Arr.Count, jsonResponse);
  }
}

void GetOrderDetailsV
{
  ShowMessage('OrderID will be query: '+IntToStr(OrderID));
  TCRest.ClearParams;
  uDataLib.GetConnectDB(TCRest);
  TCRest.Resource = 'orderDetails/' + IntToStr(OrderID);
  TCRest.Accept = 'application/json';
  TCRest.Method = rmGET;
  
  TCRest.AddHeader('Authorization','Bearer ' + Clomosy.GlobalVariableString);
  TCRest.OnCompleted = 'GetOrderDetailsCompletedV';
  TCRest.ExecuteAsync;
  TCRest.ClearBody;
  
}
https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">
Yukarı Dön
Emr.Erkmn Açılır Kutu İzle
Moderatör
Moderatör


Kayıt Tarihi: 28 Şubat 2025
Durum: Aktif Değil
Puanlar: 406
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Emr.Erkmn Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: Dün Saat 11:46
Sorunun iki kaynağı var gibi gözüküyor, 
uDataLib.GetConnectDB için de mantık hatası ve  executeAsync https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">

void GetConnectDB(TCRest : TCLRest)
{
  try
  {
    if (Clomosy.AppPlatform == 0) // is Windows
    {
      TCRest.BaseURL = 'http://MY-API/';
    }else {
      TCRest.BaseURL = 'https://MY-URL.com.tr/';
    }
  }
  except
  {
    ShowMessage('GetConnectDB Hatası: '+LastExceptionMessage);
  }
}
Execute komutu önce çalışıyor ve yavaşlatıyor. 
Asıl işi yapacak olan ExecuyeAsync komunu çalıştırmayı dene. 
GetConnectDB sadece basel url olarak ayarla,

kod da TclREst'i iki prosedürde de asenkron olarak kullanışmış, 


void GetOrderDetailsV
var
  jsonResponse, NoteString: String;
  Arr : TCLJSONArray;
{
  ShowMessage('OrderID will be query: '+IntToStr(OrderID));
  TCRest.ClearParams;
  
  uDataLib.GetConnectDB(TCRest);
  
  TCRest.Resource = 'orderDetails/' + IntToStr(OrderID);
  TCRest.Accept = 'application/json';
  TCRest.Method = rmGET;
  
  TCRest.AddHeader('Authorization','Bearer ' + Clomosy.GlobalVariableString);
  
  try
    TCRest.Execute;
  except
    ShowMessage('API Hatası (Execute): ' + LastExceptionMessage);
  }

  jsonResponse = TCRest.Response;
  ShowMessage('Json Response: '+ jsonResponse); 
  
  if(jsonResponse == ''){
    ShowMessage('Sipariş Detaylar listesi boş herhangi bir sipariş yok.');
  }else{
    try
      Arr = TCLJSONArray.CreateFromJSON(jsonResponse);
      noteMemo.Text = Clomosy.CLParseJSON(jsonResponse, '0.note');
      AmountValueLbl.Text = Clomosy.CLParseJSON(jsonResponse, '0.total_price') + 'TL';
      DetailsPnlV(Arr.Count, jsonResponse);
    except
      ShowMessage('JSON Ayrıştırma Hatası: ' + LastExceptionMessage);
    }
  }
}


Yukarı Dön
M-Guney Açılır Kutu İzle
Kıdemli Üye
Kıdemli Üye


Kayıt Tarihi: 16 Eylül 2025
Konum: Konya, Meram, K
Durum: Aktif
Puanlar: 102
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı M-Guney Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 19 Saat 28 Dakika Önce Saat 18:10
uDataLib deki fonksiyonumda değişikliğe gittim fakat hala Response'ı çekemiyorum.

function GetWithRes(AResource : String):TCLRest
var 
LRest : TCLRest
{
  LRest = TCLRest.Create;
  try
      if (Clomosy.AppPlatform == 0) // is Windows
      {
        LRest.BaseURL = 'http://MYAPI/';
      }else {
        LRest.BaseURL = 'https://myAPI.com.tr/';
      }
      LRest.Resource = AResource;
      LRest.Accept = 'application/json';
      LRest.Method = rmGET;
  
  LRest.AddHeader('Authorization','Bearer ' + Clomosy.GlobalVariableString);
finally
  Result = LRest;
  //LRest.Free;
}
}



void GetOrderDetailsCompletedV(Sender)
var
  jsonResponse: String;
  Arr : TCLJSONArray;
{
  jsonResponse = TCLRest(Sender).Response;
  ShowMessage('Json Response: '+ TCLRest(Sender).Response);
  ShowMessage('query is finished');
  Arr = TCLJSONArray.Create;
Arr = TCLJSONArray.CreateFromJSON(jsonResponse);
  if(jsonResponse == ''){
    ShowMessage('Sipariş Detaylar listesi boş herhangi bir sipariş yok.');
  }else{
    noteMemo.Text = Clomosy.CLParseJSON(jsonResponse, '0.note');
    AmountValueLbl.Text = Clomosy.CLParseJSON(jsonResponse, '0.total_price') + 'TL';
    DetailsPnlV(Arr.Count, jsonResponse);
  }
  TCLRest(Sender).Free;
}

void GetOrderDetailsV
var LRest : TCLRest;
{
  ShowMessage('OrderID will be query: '+IntToStr(OrderID));
  LRest = GetWithRes('orderDetails/' + IntToStr(OrderID));
  
  LRest.OnCompleted = 'GetOrderDetailsCompletedV';
  LRest.ExecuteAsync;
  LRest.ClearBody;
}



https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">
Yukarı Dön
Emr.Erkmn Açılır Kutu İzle
Moderatör
Moderatör


Kayıt Tarihi: 28 Şubat 2025
Durum: Aktif Değil
Puanlar: 406
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Emr.Erkmn Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 4 Saat 29 Dakika Önce Saat 09:09
Merhaba Güney,
Tahminim sorun GetOrderDetailsV içinde LRest local olarak tanımlı ExecuteAsync çağrıldıktan sonra scoptan çıkıyor. 
Çözüm olarak LRest'i global veya form seviyesin de tutabilir misin?




function GetWithRes(AResource : String):TCLRest
var 
  LRest : TCLRest
{
  LRest = TCLRest.Create;
  
  Try
  
    if (Clomosy.AppPlatform == 0) 
    {
      LRest.BaseURL = 'http://MYAPI/';
    }
    else 
    {
      LRest.BaseURL = 'https://myAPI.com.tr/';
    }
    
    LRest.Resource = AResource;
    LRest.Accept = 'application/json';
    LRest.Method = rmGET;
    LRest.AddHeader('Authorization','Bearer ' + Clomosy.GlobalVariableString);
  
  finally
  
    Result = LRest;
  }
}



var
  OrderDetailsRest: TCLRest;  

void GetOrderDetailsV
{
  Try
    ShowMessage('OrderID will be query: '+IntToStr(OrderID));
    
    if (OrderDetailsRest <> nil)
    {
      Try
        OrderDetailsRest.Free;
        OrderDetailsRest = nil;
      except
      }
    }
    OrderDetailsRest = GetWithRes('orderDetails/' + IntToStr(OrderID));
    
    if (OrderDetailsRest <> nil)
    {
      OrderDetailsRest.OnCompleted = 'GetOrderDetailsCompletedV';
      
      OrderDetailsRest.ExecuteAsync;
      
    }
    else
    {
      ShowMessage('Rest oluşturulamadı!');
    }
  
  except
    ShowMessage('GetOrderDetailsV hatası: ' + LastExceptionMessage);
  }
}

void GetOrderDetailsCompletedV(Sender)
var
  jsonResponse: String;
  Arr : TCLJSONArray;
  restObj: TCLRest;
{
  Try
  
    restObj = TCLRest(Sender);
    
    if (restObj == nil)
    {
      ShowMessage('Response alınamadı: Sender nil!');
      Exit;
    }
    
    jsonResponse = restObj.Response;
    
    ShowMessage('Json Response: ' + jsonResponse);
    ShowMessage('query is finished');
    
    if (Trim(jsonResponse) == '')
    {
      ShowMessage('Sipariş Detaylar listesi boş herhangi bir sipariş yok.');
      
      if (OrderDetailsRest <> nil)
      {
        OrderDetailsRest.Free;
        OrderDetailsRest = nil;
      }
      Exit;
    }
    
    Arr = TCLJSONArray.Create;
    Try
    
      Arr = TCLJSONArray.CreateFromJSON(jsonResponse);
      
      if ((Arr <> nil) && (Arr.Count > 0))
      {
        noteMemo.Text = Clomosy.CLParseJSON(jsonResponse, '0.note');
        AmountValueLbl.Text = Clomosy.CLParseJSON(jsonResponse, '0.total_price') + 'TL';
        DetailsPnlV(Arr.Count, jsonResponse);
      }
      else
      {
        ShowMessage('JSON Array boş veya geçersiz!');
      }
    
    finally
    
      if (Arr <> nil)
      {
        Arr.Free;
        Arr = nil;
      }
    }
    
    if (OrderDetailsRest <> nil)
    {
      OrderDetailsRest.Free;
      OrderDetailsRest = nil;
    }
  
  except
  
    ShowMessage('GetOrderDetailsCompletedV hatası: ' + LastExceptionMessage);
    }
    if (OrderDetailsRest <> nil)
    {
      Try
      
        OrderDetailsRest.Free;
        OrderDetailsRest = nil;
      
      except
      
      }
    }
  }
}



https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">
Yukarı Dön
M-Guney Açılır Kutu İzle
Kıdemli Üye
Kıdemli Üye


Kayıt Tarihi: 16 Eylül 2025
Konum: Konya, Meram, K
Durum: Aktif
Puanlar: 102
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı M-Guney Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 4 Saat 11 Dakika Önce Saat 09:27
void GetOrderDetailsCompletedV (Sender)
var
  jsonResponse: String;
  Arr : TCLJSONArray;
  restObj: TCLRest;
{
  restObj = TCLRest(Sender);
    
  if (restObj == nil)
  {
    ShowMessage('Response alınamadı: Sender nil!');
    Exit;
  }
  else
  ShowMessage('restObj Response: '+ restObj.Response);
  
  jsonResponse = TCLRest(Sender).Response;
  ShowMessage('Json Response: '+ jsonResponse);
  ShowMessage('query is finished');

bu kısımda öncekileri yazdırmadan query is finished döndürüyor.
https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">
Yukarı Dön
Emr.Erkmn Açılır Kutu İzle
Moderatör
Moderatör


Kayıt Tarihi: 28 Şubat 2025
Durum: Aktif Değil
Puanlar: 406
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Emr.Erkmn Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 4 Saat 6 Dakika Önce Saat 09:32
query is finished dönüyorsa muhtemelen response hazır değil ,
önce response'un hazır olup olmadığını kontrol edelim. 

https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">
Yukarı Dön
 Yanıt Yaz Yanıt Yaz Sayfa  12>

Forum Atla Forum İzinleri Açılır Kutu İzle

Forum Software by Web Wiz Forums® version 12.07
Copyright ©2001-2024 Web Wiz Ltd.

Bu Sayfa 0,031 Saniyede Yüklendi.