REST'in bir web hizmeti olduğu varsayımı altındaydım, ancak bunu düşünmem yanlış görünüyor - yani, REST nedir?
Wikipedia'yı okudum ama yine de kafamı etrafına sayamıyorum. Neden birçok yer API'leri REST API'leri olarak adlandırıyor?
REST'in bir web hizmeti olduğu varsayımı altındaydım, ancak bunu düşünmem yanlış görünüyor - yani, REST nedir?
Wikipedia'yı okudum ama yine de kafamı etrafına sayamıyorum. Neden birçok yer API'leri REST API'leri olarak adlandırıyor?
Yanıtlar:
REST belirli bir web hizmeti değil, durum bilgisini yönetmek için bir tasarım konsepti (mimari). Bununla ilgili temel makale Roy Thomas Fielding'in tezi (2000), "Mimari Stiller ve Ağ Tabanlı Yazılım Mimarilerinin Tasarımı" ( Irvine, Kaliforniya Üniversitesi'nden çevrimiçi olarak) idi.
Önce Ryan Tomayko'nun gönderisini okuyun REST'i eşime nasıl açıkladım ; harika bir başlangıç noktası. Sonra Fielding'in gerçek tezini okuyun. O kadar da ileri değil, ne de uzun (altı bölüm, 180 sayfa)! (Okuldaki çocukları çok kısa olduğunu biliyorum).
EDIT: REST açıklamak için anlamsız hissediyorum. Ölçeklenebilirlik, görünürlük (vatansız) vb.Gibi çok fazla kavramı vardır, okuyucunun kavraması gerekir ve bunların gerçek tez olduğunu anlamak için en iyi kaynaktır. POST / GET vb.
REST, genellikle web uygulamaları için kullanılan bir yazılım tasarım modelidir. Layman'ın terimleriyle bu, birçok farklı projede yaygın olarak kullanılan bir fikir olduğu anlamına gelir. Temsil Devlet Transferi anlamına gelir . REST'in temel fikri, sunucu tarafındaki nesnelere (veritabanı tablosundaki satırlarda olduğu gibi) oluşturulabilecek veya yok edilebilecek kaynak olarak davranmaktır.
REST hakkında düşünmenin en temel yolu, web uygulamalarınızın URL'lerini biçimlendirmenin bir yoludur. Örneğin, kaynağınız "gönderiler" olarak adlandırıldıysa:
/posts
Kullanıcının görüntülemek için TÜM yayınlara nasıl erişeceği olurdu.
/posts/:id
Bir kullanıcının benzersiz kimliğine göre alınan tek bir gönderiye nasıl erişeceği ve görüntüleyeceği olurdu.
/posts/new
Yeni bir yazı oluşturmak için bir formu nasıl görüntüleyeceğiniz olurdu.
POST isteği göndermek , veritabanı düzeyinde yeni bir gönderi oluşturmanın yolu/users
olacaktır .
Bir PUT isteği /users/:id
göndermek, yine benzersiz bir kimlikle tanımlanan belirli bir gönderinin niteliklerini nasıl güncelleyeceğinizdir.
DELETE isteği /users/:id
göndermek, yine benzersiz bir kimlikle tanımlanan belirli bir yayını nasıl sileceğinizdir.
Anladığım kadarıyla, REST deseni esas olarak RESTful rotalarına büyük önem veren Ruby on Rails çerçevesi tarafından popüler hale getirildi (web uygulamaları için). Buna rağmen yanılmış olabilirim.
Bu konuda konuşmak için en nitelikli olmayabilirim, ama bu şekilde öğrendim (özellikle Rails gelişimi için).
Birisi bir "REST api" denildiğinde, genellikle kastedilen, veri almak için RESTful URL'leri kullanan bir api'dir.
REST
bir mimari tarzı ve ağ tabanlı yazılım mimarileri için bir tasarım .
REST
kavramlar kaynak olarak adlandırılır. Bir kaynağın temsili vatansız olmalıdır. Bazı ortam türleriyle temsil edilir. Medya türleri bazı örnekler XML
, JSON
ve RDF
. Kaynaklar bileşenler tarafından manipüle edilir. Bileşenler, standart bir düzgün arabirim aracılığıyla kaynakları ister ve yönlendirir. HTTP durumunda, bu arayüz mesela standart HTTP op oluşur GET
, PUT
, POST
, DELETE
.
REST
genellikle HTTP
HTTP'nin basitliği ve RESTful ilkeleriyle çok doğal eşleşmesi nedeniyle kullanılır . Ancak REST herhangi bir özel protokole bağlı değildir.
İstemci-Sunucu İletişimi
İstemci-sunucu mimarilerinin endişeleri birbirinden çok farklıdır. RESTful tarzında oluşturulan tüm uygulamalar da ilke olarak istemci-sunucu olmalıdır.
Vatansız
Sunucuya yapılan her istemci isteği, durumunun tam olarak temsil edilmesini gerektirir. Sunucu, herhangi bir sunucu bağlamı veya sunucu oturumu durumu kullanmadan istemci isteğini tam olarak anlayabilmelidir. Tüm durumun istemcide tutulması gerektiği sonucuna varılır. Vatansız temsilini daha sonra daha ayrıntılı olarak tartışacağız.
cacheable
Önbellek kısıtlamaları kullanılabilir, böylece yanıt verilerinin önbelleğe alınabilir veya erişilemez olarak işaretlenmesi sağlanır. Önbelleğe alınabilir olarak işaretlenen tüm veriler, aynı sonraki isteğe yanıt olarak yeniden kullanılabilir.
Düzgün Arayüz
Tüm bileşenler tek bir düzgün arayüz üzerinden etkileşime girmelidir. Tüm bileşen etkileşimi bu arabirim üzerinden gerçekleştiğinden, farklı hizmetlerle etkileşim çok basittir. Arayüz aynı! Bu aynı zamanda uygulama değişikliklerinin tek başına yapılabileceği anlamına gelir. Bu tür değişiklikler, üniform arayüz her zaman değişmediği için temel bileşen etkileşimini etkilemez. Bir dezavantajı, arayüz ile sıkışmış olmasıdır. Arabirim değiştirilerek belirli bir hizmete bir optimizasyon sağlanabilirse, REST bunu yasakladığı için şansınız kalmaz. Bununla birlikte, parlak tarafta, REST web için optimize edilmiştir, bu nedenle HTTP üzerinden REST'in inanılmaz popülaritesi!
Yukarıdaki kavramlar, REST'in tanımlayıcı özelliklerini temsil eder ve REST mimarisini web hizmetleri gibi diğer mimarilerden ayırır. Bir REST hizmetinin bir web hizmeti olduğunu, ancak bir web hizmetinin mutlaka bir REST hizmeti olmadığını belirtmek yararlıdır.
Bu blog Bkz yazısı üzerine DİNLENME Tasarım Esasları hakkında daha fazla ayrıntı için DİNLENME ve yukarıdaki ilkeler.
Temsili Devlet Transferi anlamına gelir ve birçok şey anlamına gelebilir, ancak genellikle API'ler ve uygulamalar hakkında konuşurken, web hizmetleri yapmanın veya web üzerinden konuşma programlarını almanın bir yolu olarak REST'ten bahsediyorsunuz.
REST temel olarak sistemler arasında iletişim kurmanın bir yoludur ve SOAP RPC'nin yapmak için tasarlandığı şeylerin çoğunu yapar, ancak SOAP genellikle bir bağlantı kurarken, kimlik doğrulaması yapar ve daha sonra bu bağlantı üzerinden bir şeyler yapar, REST web'in çalışmasıyla hemen hemen aynı şekilde çalışır . Bir URL'niz var ve bu URL'yi talep ettiğinizde bir şeyler geri alabilirsiniz. İnsanlar web'i en büyük REST uygulaması olarak tanımlıyorlar ve bu teknik olarak doğru olsa da, ne olduğunu açıklamaya gerçekten yardımcı olmuyor.
Özetle REST, bir web tarayıcısının kullandığı araçlara benzer araçları kullanarak iki uygulamanın İnternet üzerinden konuşmasını sağlar. Bu SOAP'tan çok daha basit ve REST'in yaptığı pek çok şey "Hey, işler bu kadar karmaşık olmak zorunda değil" diyor.
Okumaya değer:
http://en.wikipedia.org/wiki/Representational_State_Transfer
Temel fikir, sunucuya sürekli bir bağlantı kurmak yerine, bir istekte bulunmanız, bazı veriler almanız, bir kullanıcıya göstermeniz, ancak belki de hepsinin değil ve daha sonra kullanıcı daha fazla veri gerektiren bir şey yaptığında, veya sunucuya bir miktar iletmek için istemci yeni bir duruma geçiş başlatır.