2014-11-20 29 views
5

Geçmiş:HTTP sürüyor bir işlemi iptal yöntemini SİL kullanma

benim siteyi kullanarak sipariş isteyen insanlar için bir programlama arabirimini sağlar.

/api/v1/orders numaralı telefondan GET ve POST yöntemlerini kullanarak sipariş vermek ve sipariş edilen tüm siparişlerin listesini görüntülemek için kullanabilirsiniz. Aynı zamanda, bir siparişin belirli ayrıntılarını görüntülemek için /api/v1/orders/<order_id> numaralı telefondan GET metodunu da kullanabilirler.

bir siparişi iptal etmek için bir yol sağlamak için bir ihtiyaç vardır

Ancak kayıtlar kendilerini muhafaza edilmesi gerekir.

Ben aklı başında bir karar olacaktır dair daha tecrübeli geliştiricilerin görüşlerini almak istiyoruz:

a) listesinden silmek istiyorsunuz, hangi /api/v1/current_orders/<order_id> üzerinde DELETE fiil uygulamak "geçerli" siparişler (iptal edildi olarak işaretleyerek). Olumsuz yanı, kafa karıştırıcı olabilecek başka bir isim kullanmasıdır.

b)) bir aynı işlevsellikle /api/v1/orders/<order_id> üzerinde DELETE fiil uygulanması. Bu biraz yanıltıcıdır, çünkü varlık gerçekten silinmeyecek ve tüketici bunun farkında olmalıdır.

c)) JSON yükü içinde order_id ile /api/v1/cancellations üzerinde /api/v1/cancellations/<order_id> (veya POST üzerinde POST fiil uygulanması. Bu, idealden daha az gibi görünmektedir, çünkü bu talep sonucunda bir kaynak yaratılmayacaktır. Bununla birlikte, bu son noktayı kullanmanın sonuçları daha açık görünmektedir.

d) ...?

Soru: netlik ve sezgi ve birlikte ihtiyacını REST API için uç noktalarını tasarlarken, ama akılda tutmak için bir "mükemmel" çözümü her zaman olmadığını farkındayım

seçeneklerden "optimum" dir iyi uygulamalar, yüksek bakmaktadır?

cevap

3

Ne iptal olduğunu belirten /api/v1/orders/<order_id> üzerinde fiil PATCH hakkında?

HTTP PATCH: bir işletme kısmi değişiklikler yapmak verir. POST yeni bir tane oluştururken ve PUT varolan bir tanesini değiştirirken, PATCH yalnızca gönderdiğiniz özellikleri güncelleştirir, kalanları bırakır.

Yalnızca { isCancelled:true} gibi bir öğeyi HTTP PATCH olarak göndermeniz gerekir, bu durumda kodunuz varlığı günceller ve bekleyen işleri iptal etme gibi işlem yapar.

İlgili konular