Delphi Can

Orjinalini görmek için tıklayınız: Express Dataset [Beta]
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Merhabalar,

Öncelikle forum hayırlı olsun,
Bir arkadaşımın hazırlamış olduğu webservisler için olan dataseti sizlerle paylaşmak istedim.

Kullanımı oldukça basit olan bu dataset standartlara uygun olarak yapılan webservisdeki methodları (GET,POST,PUT,DELETE) kullanarak rahatça işlem yapmanıza olanak sağlayacaktır.

Örnek "GET" methodu için kendi projemde bir webservisi çalıştıracağım. "PUT,DELETE,POST" yapılarını en aşağıda verdiğim componentin kaynak yeri olan github hesabından erişebilirsiniz.

Hazırlanış:
 
 İlk olarak ekte verdiğim componenti kurmanız gerekmekte.
 Eğer web servisinizin yapısında login(cookie kulanarak diğer methodları çağırmak için) var ise. "ExpressConnection" componentimizi formumuza sürükleyip bırakalım. Eğer bahsettiğim yok ise bu gerekmemektedir.

 ExpressConnection componentimizin Object Inspector'deki Server isimli propertysine serverimizi adresimizi yazalım ben örnek projenin devamında "http://mangakafe.com" üzerinden gideceğim için bunu yazıyorum.

gXYDVL.png


  Sıradaki yapacağımız iş formumuzun üzerine 2 Adet buton(Giriş ve Listeleme için), DBGrid, DataSource ve bir adet CRUDDataSet componentlerini istediğiniz gibi yerleştirmek.

  İşlemleri tamamladıktan sonra Giriş butonumuza çift tıklayarak Yazacağımız kodlara geçiyoruz.

  GİRİŞ BUTONU
  Bu iş için önceklikle Request ve Response paremetrelerimizi hazırlıyoruz.
  Aşağıda bu iş için hazırladığım recordları görebilirsiniz.
 
TUser=record
   status:boolean;
   current_user: array of TCurrent_User;
 end;

 TUserSecure=record
   KullaniciAd,
   Sifre: String;
 end;

procedure TMainForm.LoginBtnClick(Sender: TObject);
var
  UserInfo: TUserSecure;
  Response: TUser;
begin
  //Kullanıcı bilgilerimizi dolduruyoruz.
  with UserInfo do
  begin
    KullaniciAd := 'testmobil';
    Sifre := 'bd0df0cf82b1cdef695bf24057544117';
  end;
  Response := ExpressConnection.Post<TUserSecure,TUser>('http://mangakafe.com/api/api.php/Kullanici/Giris',UserInfo);

  //Response içerisinde status true döner ise login başarılıdır.
end;

  ExpressConnection.Post'i açıklamak gerekirse "TUserSecure" requestimiz ve "TUser" olarak göndereceğimizi söylediğimiz şey ise webservisimizden dönen response değerlerinin tipleridir.
  Parametreler ilk parametre string olan servis adresi 2. parametre ise giriş bilgilerimizin bulunduğu TUserSecure recordundan elde ettiğimiz değişkenimiz.


  Listeleme BUTONU
  Bunun için sadece çalıştıracağımız kod "CRUDDataSet1.Open"dir. Bu kodun çalıştığını görmemiz için tabikide DBGridimize Datasourceyi. DataSourcemize CRUDDataSet1 nesnemizi tanımlamalıyız tıpkı standart bir Grid Query ilişkisi tanımlar gibi.
 
  Aşağıdaki resimden de göreceğiniz üzere "CRUDDataSet1.Open" komutumuzun çalışması için Object Inspector'deki Apı ayarlarından Get bölümündeki "URI" kısmına methodumuzu tanımlamalıyız.

  NOT: Get methodun tanımlı olması zorunludur. Eğer Sadece GET'i yazıp diğerlerini boş bırakırsanız herşeyini aynı varsayıp sadece kullanımını otomatik değiştiriyor.(PUT,DELETE,POST)


 OEz5yZ.png



Konu hakkında eğer gözümden birşey kaçmış ise yorum olarak belirtirseniz çok müteşekkir olurum.

İyi çalışmalar.



Link: Örnek Proje dosyaları ve Component Dosyaları

Kaynak: https://github.com/onryldz/express-dataset
Merhaba,
Zaman ayırıp Makale niteliğinde bir paylaşımda bulunduğunuz için teşekkür ederim.
Yeni nesil teknoloji deyince, Web Service veya Uzak Veri Tabanı Sistemleri (cloud, storage, Mongo vb.) olmazsa olmazlar arasındadır. 
Web servis bağlantılarının zorluk ve sıkıntılarını çeken bilir. Bu kapsamda sunmuş olduğunuz çözümün bir bileşen (Component) şeklinde olması, aynı zamanda bunu açık olarak herkes ile paylaşmanız taktire şayandır.
(26-09-2016, Saat: 16:45)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba,
Zaman ayırıp Makale niteliğinde bir paylaşımda bulunduğunuz için teşekkür ederim.
Yeni nesil teknoloji deyince, Web Service veya Uzak Veri Tabanı Sistemleri (cloud, storage, Mongo vb.) olmazsa olmazlar arasındadır. 
Web servis bağlantılarının zorluk ve sıkıntılarını çeken bilir. Bu kapsamda sunmuş olduğunuz çözümün bir bileşen (Component) şeklinde olması, aynı zamanda bunu açık olarak herkes ile paylaşmanız taktire şayandır.

Rica ederim paylaşmak herşeydir.
Sayın @barisatalay paylaşımlarınızı birkaç yıldır takip ediyorum. Teşekkürler