Kavramlar
REST Nedir?
REST REpresentational State Transfer ifadesini simgeler. REST web standardları temelli mimariye sahiptir ve veri aktarımı/iletişimi için HTTP Protokolünü kullanır.
REST her bileşeni bir kaynak (resource) olan yerde HTTP standart metodları ile erişimi sağlar. REST ilk olarak Roy Fielding tarafından 2000'li yıllarda geliştirilmiştir.
REST mimarisinde;
- REST Sunucusu kaynaklara erişimi sağlar
- REST İstemcisi ise kaynaklara erişir
- Her bir kaynak URIs/ global IDs ile tanımlanır.
- REST kaynakları sunmak için çeşitli sunumlar(representation) kullanır. Bunlar;
- text
- JSON
- XML
- JSON web servislerde kullanılan en popüler formattır.
HTTP Methotları
Aşağıda listelenmiş iyi bilinen HTTP metotları REST tabanlı mimarilerde de kullanılır.
GET - Kaynaklara sadece okuma izinli erişim sağlar.
PUT - Yeni bir kaynak oluşturmak için kullanılır.
DELETE - Bir kaynaği silmek için kullanılır.
POST - mevcut bir kaynağı güncellemede ya da yeni bir kaynak oluşturmada kullanılır.
OPTIONS - kaynak üzerinden geçerli işlemleri öğrenmek için kullanılır.
RESTFul Web Servisleri
Web Servis aslında uygulamalar ya da sistemler arasındaki veri değişimi için açık protokol ve standartlar kolleksiyonudur.
Yazılım uygulamaları çok farklı dillerde yazılmış ve farklı platformlar üzerinden çalışıyor olabilir. Bütün bu uygulamalar tek makina üzerinde ya da internette farklı makineler üzerinde olabilir. Bunlar arasındaki veri değişimi için WS ler kullanılır.
Bu birlikte çalışabilirlik (Örneğin Java ve Python, ya da Windows ve Linux uygulamaları) açık standartların kullanımı ile olur.
REST mimarisine dayanan Web Servisler. RESTful Web Servisler olarak bilinir.
Bu Web Servisler REST mimari kavramını uygulamak için HTTP metotlarını kullanırlar. Bir RESTful web servis genelde bir URI(Uniform Resource Identifier) tanımlar, JSON ve HTTP metotları ile source sunumunu sağlar.
RESTFul Web Servis Örnekleri
Sr. No. | HTTP Method | URI | Operation | Operation Type |
---|---|---|---|---|
1 | GET | /UserService/users | Get list of users | Read Only |
2 | GET | /UserService/users/1 | Get User with Id 1 | Read Only |
3 | PUT | /UserService/users/2 | Insert User with Id 2 | Idempotent |
4 | POST | /UserService/users/2 | Update User with Id 2 | N/A |
5 | DELETE | /UserService/users/1 | Delete User with Id 1 | Idempotent |
6 | OPTIONS | /UserService/users | List the supported operations in web service | Read Only |
Logo REST Servis
Kısaltması | LO REST |
---|---|
Uyumlu Programlar | Tiger 3, Tiger Enterprise 3, Tiger Wings |
Uyumsuz Programlar | Go Plus, Go 3, Bordro, Logo Start, Tiger Plus, Tiger Enterprise |
Tanım | Entegrasyon Aracı |
Logo Objects'in yeteneklerinin kullanılabildiği REST temel prensiplerine sahip Logo ERP arayüzüdür. 3 Serisi Logo ERP ürünleri tarafından desteklenmeye başlanmıştır.
Logo REST servis arka planda Logo Objects'i kullandığı için öncelikle Logo Objects dökümantasyonunu incelemenizde fayda vardır.
Lisans
Logo REST Servisin kendisine ait lisansı bulunmuyor. Logo Objects altyapısını kullanır. Dolayısıyla Logo REST Servisin çalışabilmesi için Logo Objects lisansının sistemde bulunması gerekmektedir. Logo Objects temelleri ve lisans konusu için lütfen tıklayınız.
Logo REST Servisin sadece Logo Yazılımın 3 serisi ürünlerinde çalışabildiği unutulmamalıdır. Eski ürünlerde Logo REST desteği bulunmaz.
Not : Logo App içerisinde Logo REST Servis desteği bulunuyor. Logo App içerisinden Logo REST Servis kullanıldığında herhangi bir lisans (Logo Objects dahil) aranmaz.
Kurulum
Logo ürün kurulumu gerçekleştirilirken son aşamaya geldiğinde aşağıdaki ekranla karşılaşılır.
Eğer bu ekranda "Logo Rest Service ayarları yapılsın" işaretlenirse
- REST servis kurulumu ve ayarları otomatik olarak gerçekleşecek ve öndeğer ayarlar ile çalışmaya başlayacaktır.
- REST servis kurulumu ve ayarları otomatik olarak gerçekleşecek ve öndeğer ayarlar ile çalışmaya başlayacaktır.
Dikkat
Öndeğer kurulum secure http kurulumu olacağından eğer proxy ve/veya firewall kullanıyorsanız Logo REST Service'in talep ettiği portlar yetkilendirilmemiş olabilir.
Dolayısıyla servis cevap veremeyebilir.
Bu durumda proxy ve firewall ayarlarınızı ilgili portlara göre düzenlemelisiniz.
Port yetkilendirmesi ayarları kullanılan sisteme ve özel firewall uygulamalarına göre değişebilir. Ancak windows için basit yapılandırma ayarları için;
sayfasından faydalanabilirsiniz.
Kurulum sonrasında SSL kullanılabilmesi için gerekli Server ve Client sertifikaları yüklenmiş olmalıdır.
Bu sertifikaların kullanılabilir olup olmadıklarını
sayfasından faydalanabilirsiniz.
Not : Eğer https (SSL sertifikaları) kullanılmayacak ve http üzerinden haberleşme sağlanacaksa server ve client tarafında yüklenen sertifikalar önemini yitirmektedir.
Http üzerinden yapılacak veri alış verişinde sertifikaların yüklenmesine veya kontrol edilmesine gerek yoktur.
Mimari
Logo REST,
- yazılımcıların standart CRUD (Create, Read, Update, Delete) işlemlerini
- HTTP komutlarını kullarak gerçekleştirmesine izin vermekte
- http ve https(Secure http) haberleşmesini IIS servera ihtiyaç bırakmadan
sağlayabilmektedir.
Logo REST çalışma mimarisi aşağıdaki şekilde özetlenmiştir.
REST istemci lisans kontrolü Lisans Sunucusu üzerinden yapılır.
Logo Objects istemcisi için ise sunucudaki dosya (LogoSet.cfg) üzerinden lisans kontrolleri yapılır.
Logo App REST arayüzlerini lisans denetimi olmaksızın kullanabilir.
İlk bakışta temel özellikleri şu şekilde özetlenebilir;
- .Net Framework ile geliştirilmiştir.
- http ve https protokollerini ve bu protokoller ile haberleşen masaüstü, mobil ve web uygulamarı içerisinde kullanılabilir
- İletişim için JSON formatını kullanır
- Arka planda veri alış verişi Logo Objects ile gerçekleştirilmektedir. Dolayısıyla Logo Objectsin tüm veri aktarımı yeteneklerine sahiptir.
- Multi Thread çalışacak şekilde dizayn edilmiştir.
- SSL sertifikaları ile güvenli iletişim sağlar
- Veri tabanı sorgulamaları yetkilendirilebilir (Örneğin sadece select sorgularına izin verilip insert-update çağrılarının karşılanmaması sağlanabilir)
Ürünlere Göre REST Fonksiyon Karşılaştırması
Ürünlerimizde REST iki farklı şekilde sunulur.
- Logo App için sunulan REST
- LogoObjects/NetOpenX entegrasyon araçları üzerinden sunulan REST
Logo Objects üzerinden sunulan REST, fonksiyon açısından çok az bir farkla uygulanmıştır. Bu farklar özetle;
- Logo Objects'te CAPI (firma, terminal ekleme gibi yönetim arayüzü), REST ile sadece okunabilir yapılmıştır.
- Ayrıca Logo Objects'te tanımlı ama kullanılmayan çok az sayıdaki arayüzler REST'e geçirilmemiştir.
Aşağıdaki tabloda Logo Apps ile Enterasyon araçları(Logo Objects, NetOpenX) üzerinden sunulan servislerin karşılaştırmasını görebilirsiniz.
Logo Apps REST | Logo Objects REST | NetOpenX REST | |||
---|---|---|---|---|---|
Netsis3 | Tiger3 | Go3 | |||
Data Nesnesi | Tüm Data Nesnesi | Kartlar+Fişler | Kartlar | Kartlar+Fişler | Tüm Data Nesneleri |
Metodlar | Tüm (NetOpenX) | Tüm (Logo Objetcs) | Tüm (Logo Objetcs) | Tüm (Logo Objetcs Production Application dahil) | Tüm (NetOpenX) |
Lisans | ihtiyaç yok | ihtiyaç yok | ihtiyaç yok | Lisansa gerek var | Lisansa gerek var |
İşleyiş adımları kısaca şu şekilde özetlenebilir;
Erişim Kontrol
Herhangi bir işlem öncesinde yazılımcı access token (erişim belirteci) çağrısını servise gönderir. Bu çağrıda bağlantı kurulacak Logo ürünü içerisinde tanımlanmış standart bir kullanıcının kullanıcı adı, şifresi ve bağlantı kurulmak istenen firma numarası yer alır. Rest servisi bu çağrıyı olumlu karşılarsa geriye JSON formatında token bilgisi döndürür.
İşlem
Birinci adımda karşılanan token bilgisi ile yazılımcı yaptırmak istediği işlem bilgisini rest servise gönderir. Bu işlem herhangi bir data işlemi, örneğin sipariş fişi aktarımı olabileceği gibi irsaliye faturalama, borç kapama işlemi vb. Application nesnesi işlemi veya bir sorgulama işlemi de olabilir. Rest servis çağrıyı olumlu karşıladığında geriye JSON formatında bir dönüş yapmaktadır.
İşlem Sonlandırma
İşlem sonrasında ilgili session açık bırakılabilir veya yazılımcı tarafından sonlandırılabilir. Sonlandırılmadığı takdirde birinci aşamada elde edilen access token parametrik olarak belirlenebilen bir süre sonra otomatik olarak kullanım dışı olacaktır. Bu durumda da ileride değineceğimiz yöntemlerle access token için ek süre verilebilir.
Kaydet
Kaydet
Kaydet
Kaydet