SORU
27 Temmuz 2011, ÇARŞAMBA


Non-CRUD işlemleri Dinlendirici bir hizmet

"Ekleme yolu olmayan CRUD Dinlendirici bir hizmet işlemleri? Dinlendirici ne Bu gibi kayıtlar için CRUD erişim sağlayan bir hizmet var

GET /api/car/123           <- Returns information for the Car object with ID 123
POST /api/car              <- Creates a new car (with properties in the request)
PUT /api/car/123           <- Updates car 123 (with properties in the request)
DELETE /api/car/123        <- Deletes car 123    
POST /api/car/123/wheel/   <- Creates a wheel and associates it to car 123

Eğer arabanın rengini değiştirmek istiyorum, sadece 3 ** ve bir POST yeni rengin değişken vardır söyleyebilirim.

Ama diyelim ki bir araba satın almak istiyorum, ve bu işlem sadece bir "" kayıt "özelliği. araba" sahibi kullanıcı güncelleme daha karmaşık olduğunu söylüyor Dinlendirici için sadece POST /api/car/123/purchase nereye "gibi," aslında bir yöntem adı? satın mı Veya özel bir HTTP fiil PURCHASE yerine POST gibi mi kullanmalıyım?

Veya DİNLENME kapsamının tamamen dışında olmayan CRUD işlemleri.

CEVAP
27 Temmuz 2011, ÇARŞAMBA


Düşünsatın almaiş bir kişi ya da birkaynakDinlendirici bir sözlük. Bu varlık, bir satın alma aslında yeni bir kaynak yaratmak olduğunu söyledi. Yani:

POST /api/purchase

yeni bir sipariş. Ayrıntıları (kullanıcı, araba, vb.) kimliği (veya URI) tarafından başvurulan olmalıdır içeriğini bu adrese gönderdi.

Bir araba sipariş sadece veritabanında basit bir EKLEME olmadığını fark etmez. Aslında, GERİSİ CRUD işlemleri olarak veritabanı tabloları teşhir ilgili değil. Bakış mantıksal açıdan bir sipariş (satın alma) oluşturuyorsunuz, ama sunucu tarafında istediği gibi birçok işlem basamakları yapmakta özgür.

Hatta HTTP protokolü daha da kötüye. Location başlık yeni oluşturulan sipariş için bir link dönmek için, dikkatli seçin HTTP yanıt kodları sorunlar hakkında kullanıcılara (sunucu veya istemci tarafı), vb bildirmek için kullanın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • HowtoDrawAndPaint

    HowtoDrawAnd

    24 EKİM 2010
  • InfinityWard

    InfinityWard

    19 EYLÜL 2006
  • sdasmarchives

    sdasmarchive

    2 HAZİRAN 2010