2013-07-15 35 views
9

Tôi không hoàn toàn lúng túng cách cấu trúc hợp lý một API REST (hoặc REST).Cần trợ giúp để hiểu các điểm cuối REST API

Hãy tưởng tượng một API để tạo và gửi email bản tin. Bạn có thể có danh từ/tài nguyên sau: bản tin (chủ đề, nội dung, v.v.), danh sách gửi thư (bộ sưu tập người nhận) và người nhận (địa chỉ email và dữ liệu liên quan).

Vì vậy, bạn có thể sử dụng PUT để tạo ra một nguồn lực và được trả lại ID của nó:

/newsletter 
/list 
/user 

Bạn có thể có được thông tin về một nguồn tài nguyên sử dụng GET:

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

Bạn có thể cập nhật một nguồn tài nguyên hiện có sử dụng PATCH (hoặc đây phải là POST?):

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

Bạn có thể xóa tài nguyên bằng DELETE :

/newsletter/[id] 
/list/[id] 
/user/[id] 
  1. là đúng trên?

  2. Điểm cuối nào là hợp lý đối với các hành động như gửi bản tin vào danh sách, thêm người dùng vào danh sách?

Điều sau đây có ý nghĩa và nó có hữu ích không?

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

Có dư thừa hoặc vô ích để có list/[id]/add/[id]list/[id]/remove/[id] điểm cuối cho các danh sách, khi người dùng có thể được thêm vào hoặc gỡ bỏ qua PATCH tại /list/[id]?

Điều gì về việc tìm kiếm ID của người dùng thông qua thuộc tính như địa chỉ email hoặc tên? Hoặc nhận được một danh sách thông qua một định danh như tên của nó hoặc khi nó được tạo ra?

Trả lời

7

Bạn đã đóng góp khá nhiều, ngoại trừ /list/[list_id]/add/[user_id]/list/[list_id]/remove[user_id], vì bạn có động từ trong URL - đó là mục đích của các phương thức HTTP.Thay đổi họ, ví dụ:

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

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

Đối với tìm kiếm, tôi muốn đi với url tham số để xem danh sách các nguồn lực, như:

/newsletter/?name=dfjkhskdfh 
+0

Còn động từ "gửi" thì sao? – jeremiahs

1

Những động từ thường bị nhầm lẫn:

  1. Để tạo một thực thể bạn sử dụng POST
  2. Để cập nhật - PUT

Những điều này có thể được xử lý theo cách sau:

POST /newsletters/[newsletter_id]/mailinglists/[mailinglist_id]/mailingfacts - Thực hiện việc gửi các chữ cái, nó giống như thêm một thực tế của gửi thư đến bộ sưu tập

/lists/[list_id]/[user_id] - cho biết thêm một người dùng vào danh sách

/lists/[list_id]/[user_id] - xóa người dùng khỏi danh sách.

Các vấn đề liên quan