@ray, mükemmel tartışma
@jgerman, sadece REST olduğu için kaynakların POST'tan taş olarak ayarlanması gerektiği anlamına gelmediğini unutmayın.
Bir kaynağın herhangi bir temsiline dahil etmeyi seçtiğiniz şey size bağlıdır.
Ayrı ayrı başvurulan kapaklar için durumunuz, yalnızca alt kaynakları (kapaklar) çapraz referans verilebilecek bir ana kaynak (çizgi roman) oluşturulmasıdır. Örneğin, yazarlara, yayıncılara, karakterlere veya kategorilere ayrı ayrı referanslar vermek isteyebilirsiniz. Bu kaynakları ayrı ayrı veya alt kaynak olarak referans alan çizgi romandan önce oluşturmak isteyebilirsiniz. Alternatif olarak, üst kaynak oluşturulduktan sonra yeni alt kaynaklar oluşturmak isteyebilirsiniz.
Kapaklara ilişkin özel durumunuz, bir kapağın gerçekten bir çizgi roman gerektirdiği için biraz daha karmaşıktır ve bunun tersi de geçerlidir.
Ancak, bir e-posta iletisini kaynak olarak ve gelen adresini alt kaynak olarak kabul ediyorsanız, yine de gönderen adresine ayrı ayrı başvurabilirsiniz. Örneğin, adreslerden hepsini alın. Veya adresinden bir öncekiyle yeni bir mesaj oluşturun. E-posta REST olsaydı, çapraz referanslı birçok kaynağın mevcut olabileceğini kolayca görebilirsiniz: / alınan mesajlar, / taslak mesajlar, / adreslerden, / adreslere, / adresler, / konular, / ekler / klasörler / etiketleri, / kategorileri, / etiketleri, vd.
Bu eğitici çapraz referanslı kaynaklara harika bir örnek sunmaktadır.
http://www.peej.co.uk/articles/restfully-delicious.html
Bu, otomatik olarak oluşturulan veriler için en yaygın modeldir. Örneğin, sunucu tarafından oluşturulduğu için yeni kaynak için bir URI, kimlik veya oluşturma tarihi göndermezsiniz. Yine de, yeni kaynağı geri aldığınızda URI'yi, kimliği veya oluşturma tarihini alabilirsiniz.
İkili veri durumunda bir örnek. Örneğin, ikili verileri alt kaynaklar olarak göndermek istiyorsunuz. Üst kaynağı aldığınızda, bu alt kaynakları aynı ikili veriler veya ikili verileri temsil eden URI'ler olarak temsil edebilirsiniz.
Formlar ve parametreler, kaynakların HTML sunumlarından zaten farklıdır. URL ile sonuçlanan bir ikili / dosya parametresi yayınlamak bir uzatma değildir.
Yeni bir kaynak (/ comic-books / new) için form aldığınızda veya bir kaynağı düzenleme formunu aldığınızda (/ comic-books / 0 / edit), kaynağın forma özgü bir temsilini istersiniz. İçerik türü "application / x-www-form-urlencoded" veya "multipart / form-data" ile kaynak koleksiyonuna gönderirseniz, sunucudan bu tür gösterimini kaydetmesini istersiniz. Sunucu, kaydedilen HTML temsiliyle veya her neyse yanıt verebilir.
Ayrıca, API veya benzeri bir amaçla, HTML, XML veya JSON temsilinin kaynak koleksiyonuna gönderilmesine izin vermek isteyebilirsiniz.
Ayrıca, çizgi romandan sonra yayınlanan kapakları da dikkate alarak, ancak çizgi romanların bir kapağa sahip olmasını gerektiren kaynaklarınızı ve iş akışınızı tanımladığınız şekilde temsil etmek de mümkündür. Aşağıdaki örnek.
- Gecikmeli kapak oluşturmaya izin verir
- Gerekli kapakla çizgi roman oluşturmaya izin verir
- Kapaklara çapraz referans verilmesini sağlar
- Birden çok kapağa izin verir
- Taslak çizgi roman oluştur
- Taslak çizgi roman kapakları oluşturma
- Taslak çizgi roman yayınla
GET / çizgi roman
=> 200 Tamam, Tüm çizgi romanları al.
GET / çizgi romanlar / 0
=> 200 OK, Kapaklı çizgi roman (id: 0) alın (/ covers / 1, / covers / 2).
GET / çizgi romanlar / 0 / kapaklar
=> 200 Tamam, Çizgi roman için kapaklar al (id: 0).
GET / covers
=> 200 OK, Tüm kapakları al.
GET / kapaklar / 1
=> 200 Tamam, Çizgi romanla (/ çizgi romanlar / 0) kapak (id: 1) alın.
GET / çizgi romanlar / yeni
=> 200 Tamam, çizgi roman oluşturmak için form al (form: POST / taslak-çizgi romanlar).
POST / draft-comic-books
title = foo
yazar = boo
yayıncı = goo
yayınlandı = 2011-01-01
=> 302 Bulundu, Yer: / draft-comic-books / 3, Çizgi roman taslağına yeniden yönlendir (id: 3) kapaklar (ikili).
GET / taslak-çizgi romanlar / 3
=> 200 Tamam, Kapaklı taslak çizgi roman (id: 3) alın.
GET / taslak-çizgi romanlar / 3 / kapaklar
=> 200 Tamam, Taslak çizgi roman için kapaklar alın (/ taslak-çizgi roman / 3).
GET / taslak-çizgi romanlar / 3 / kapaklar / yeni
=> 200 Tamam, Taslak çizgi roman için kapak oluşturmak için form al (/ taslak-çizgi roman / 3) (form: POST / taslak-çizgi romanlar / 3 / kapaklar).
POST / taslak-çizgi romanlar / 3 / kapaklar
cover_type = front
cover_data = (ikili)
=> 302 Bulundu, Yer: / draft-comic-books / 3 / kapaklar, Taslak çizgi roman için yeni kapağa yönlendir (/ draft-comic Paket / 3 / kapakları / 1).
GET / taslak-çizgi romanlar / 3 / yayınla
=> 200 Tamam, Taslak çizgi roman yayınlamak için form al (id: 3) (form: POST / yayınlanan-çizgi romanlar).
POST / yayımlanmış-çizgi romanlar
başlık = foo
yazar = boo
yayıncı = goo
yayınlandı = 2011-01-01
cover_type = ön
cover_data = (ikili)
=> 302 Bulundu, Yer: / comic-books / 3, Yayınlanan çizgi romana yönlendir (id: 3) kapaklı.