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
Yazar
Mesaj
  Konu Arama Konu Arama  Topic Seçenekleri Topic Seçenekleri
M-Guney Açılır Kutu İzle
Deneyimli Üye
Deneyimli Üye


Kayıt Tarihi: 16 Eylül 2025
Konum: Konya, Meram, K
Durum: Aktif Değil
Puanlar: 93
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ı: 13 Saat 3 Dakika Önce 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: 399
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ı: 12 Saat 56 Dakika Önce 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
Deneyimli Üye
Deneyimli Üye


Kayıt Tarihi: 16 Eylül 2025
Konum: Konya, Meram, K
Durum: Aktif Değil
Puanlar: 93
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ı: 12 Saat 54 Dakika Önce 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
Deneyimli Üye
Deneyimli Üye


Kayıt Tarihi: 16 Eylül 2025
Konum: Konya, Meram, K
Durum: Aktif Değil
Puanlar: 93
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ı: 12 Saat 53 Dakika Önce 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
Deneyimli Üye
Deneyimli Üye


Kayıt Tarihi: 16 Eylül 2025
Konum: Konya, Meram, K
Durum: Aktif Değil
Puanlar: 93
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ı: 12 Saat 52 Dakika Önce 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: 399
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ı: 12 Saat 29 Dakika Önce 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
Deneyimli Üye
Deneyimli Üye


Kayıt Tarihi: 16 Eylül 2025
Konum: Konya, Meram, K
Durum: Aktif Değil
Puanlar: 93
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ı: 6 Saat 5 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
 Yanıt Yaz Yanıt Yaz

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,047 Saniyede Yüklendi.