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

  • Breno Rises

    Breno Rises

    7 Ocak 2014
  • Kat Krazy

    Kat Krazy

    12 Kasım 2010
  • TeachMeComputer

    TeachMeCompu

    31 EKİM 2009