Bir REST API'sinde, tümünün sizin bakış açınızla ilgili bir soru olduğunu unutmayın.
Bir REST API'sindeki iki temel kavram, uç noktalar ve kaynaklardır (varlıklar). Gevşek bir şekilde, bir uç nokta ya kaynakları GET aracılığıyla döndürür ya da POST ve PUT ve benzeri aracılığıyla kaynakları kabul eder (ya da yukarıdakilerin bir kombinasyonu).
POST ile, gönderdiğiniz verilerin, büyük olasılıkla POST'lu URL altında "canlı" olmayacak yeni bir kaynak ve bununla ilişkili bitiş noktalarının oluşturulmasına neden olabileceği veya sonuçlanmayabileceği kabul edilir. Başka bir deyişle, POST yaptığınızda, işlem yapmak için bir yere veri gönderirsiniz. POST bitiş noktası, kaynağın normal olarak bulunabileceği yer değildir.
RFC 2616'dan alıntı yapma (alakasız parçalar atlanmış ve ilgili parçalar vurgulanmış olarak):
9.5 SONRASI
POST yöntemi, kaynak sunucunun, istekte yer alan varlığı İstek Satırında Request-URI tarafından tanımlanan kaynağın yeni bir alt öğesi olarak kabul etmesini istemek için kullanılır. POST, aşağıdaki işlevleri kapsayan tek tip bir yönteme izin verecek şekilde tasarlanmıştır:
- ...
- Veri işleme sürecine form gönderme sonucu gibi bir veri bloğunun sağlanması;
- ...
...
POST yöntemi tarafından gerçekleştirilen eylem, bir URI tarafından tanımlanabilecek bir kaynakla sonuçlanmayabilir . Bu durumda, yanıtın sonucu tanımlayan bir varlık içerip içermediğine bağlı olarak 200 (Tamam) veya 204 (İçerik Yok) uygun yanıt durumudur .
Kaynak sunucuda bir kaynak oluşturulduysa, yanıt 201 olmalıdır (Oluşturuldu) ...
Sorun alanı ne olursa olsun, bir kullanıcı, bir mesaj, bir kitap olsun, 'şeyleri' veya 'verileri' temsil eden uç noktalara ve kaynaklara alıştık. Ancak, bir bitiş noktası farklı bir kaynağı da ortaya çıkarabilir - örneğin arama sonuçları.
Aşağıdaki örneği düşünün:
GET /books?author=AUTHOR
POST /books
PUT /books/ID
DELETE /books/ID
Bu tipik bir REST CRUD. Ancak eklersek:
POST /books/search
{
"keywords": "...",
"yearRange": {"from": 1945, "to": 2003},
"genre": "..."
}
Bu son nokta hakkında RESTful olmayan bir şey yok. Verileri (varlık) istek kuruluşu biçiminde kabul eder. Bu veriler Arama Kriterleri'dir - diğerlerine benzeyen bir DTO. Bu uç nokta, isteğe göre bir kaynak (varlık) üretir: Arama Sonuçları . Arama sonuçları kaynağı, istemciye hemen, yeniden yönlendirmeden ve başka bir kurallı URL'den etkilenmeden sunulan geçici bir kaynaktır.
Varlıklar kitap değildir, ancak istek varlığı kitap arama ölçütleri ve yanıt veren varlık kitap arama sonuçlarıdır.