2013-07-15 23 views
9

Bir REST (veya REST-like) API'sini hassas bir şekilde nasıl yapılandıracağımı pek bilmiyorum.REST API son noktalarını anlama konusunda yardıma ihtiyacınız var

Bülten e-postaları oluşturmak ve göndermek için bir API düşünün. Aşağıdaki isimler/kaynaklar olabilir: bültenler (konu, beden, vb.), Posta listeleri (alıcıların koleksiyonları) ve alıcılar (e-posta adresleri ve ilgili veriler).

Yani bir kaynak oluşturmak için PUT kullanabilir ve onun kimliğini iade edilmesi:

/newsletter/[id] 
/list/[id] 
/user/[id] 

kullanarak mevcut bir kaynak güncelleyebilirsiniz:

/newsletter 
/list 
/user 

Sen GET kullanarak bir kaynak hakkında bilgi elde edebilir YAMA (ya da bu POST olmalıdır?):

/newsletter/[id] 
/list/[id] 
/user/[id] 

DELETE kullanarak bir kaynak silebilirsiniz :

/newsletter/[id] 
/list/[id] 
/user/[id] 
  1. yukarıda doğru mu?

  2. Listeye bir haber bülteni göndermek ve listeye kullanıcı eklemek gibi eylemler için hangi son noktalar mantıklıdır?

Aşağıdakiler mantıklı ve RESTFull'tır?

/newsletter/[newsletter_id]/send/[mailinglist_id] 
/list/[list_id]/add/[user_id] 
/list/[list_id]/remove/[user_id] 

gereksiz veya listeler için list/[id]/add/[id] ve list/[id]/remove/[id] uç noktaları var yararsız mı, kullanıcıların eklenen veya /list/[id] de PATCH'in yoluyla kaldırılmış olabilir?

Kullanıcıların kimliklerini e-posta adresi veya ad gibi bir özellik aracılığıyla arama konusunda ne düşünüyorsunuz? Ya da, bir tanımlayıcı aracılığıyla kendi adı veya oluşturulduğu zaman bir liste mi alıyorsunuz?

cevap

7

/list/[list_id]/add/[user_id] ve /list/[list_id]/remove[user_id] dışında, çok fazla çivilenmişsiniz, çünkü URL'de fiilleriniz vardır - bu, HTTP yöntemlerinin amacıdır.örneğin, onları değiştirin:

PUT (or POST) to /list/[list_id]/users/ for adding a user to the list 

ve arama için

DELETE to /list/[list_id]/users/[user_id] 

, ben gibi kaynakların listesi için parametreli url ile gider: Bu fiiller

/newsletter/?name=dfjkhskdfh 
+0

"Gönder" fiilinden ne haber? – jeremiahs

1

vardır genellikle karışık:

  1. Bir varlık oluşturmak için o kadar posta bir gerçeği asmak gibidir, mektuplar göndererek gerçekleştirir -

    POST /newsletters/[newsletter_id]/mailinglists/[mailinglist_id]/mailingfacts: PUT

Bunlar şu şekilde tedavi edilebileceğini - güncellemek için POST

  • kullanmak toplama

    /lists/[list_id]/[user_id] - listede

    bir kullanıcıyı ekler- kullanıcıyı listeden siler.

  • İlgili konular