1 Cách POST, PATCH và XÓA các mục từ một mảng văn bản con bằng REST

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

Giả sử chúng tôi có tài liệu Người dùng sau:

{
  "_id": "1",
  "firstName": "Joe",
  "hobbies": [
     "_id": "1",
     "name": "music",
     "talented": true
   ],
}

Vì vậy, hãy nói rằng chúng tôi muốn ĐĂNG, BẮT ĐẦU hoặc XÓA một trong những sở thích của Joey. Chúng ta nên tiến hành sử dụng api nghỉ ngơi như thế nào?

Tôi đã nghĩ về việc làm một cái gì đó như thế này:

POST - /users/:id/hobbies


PATCH - /users/:id/hobbies/:id


DELETE - /users/:id/hobbies/:id

Điều này có vẻ khá ngữ nghĩa và dễ đọc, nhưng mặt khác, cảm thấy sai khi thêm tên văn bản con làm tài nguyên cho tuyến đường, vì nó là một văn bản con và thuộc về tài liệu Người dùng chính.

Vì vậy, cách khác tôi nghĩ là chỉ cần tạo một bản vá cho tài liệu Người dùng chính:

PATCH - /users/:id/

Cấu trúc tuyến đường nghỉ ngơi nào là chính xác để đạt được các nhiệm vụ này?

    
0
1 Câu trả lời                              1                         
  

Giả sử chúng tôi có tài liệu Người dùng sau   Chúng ta nên tiến hành sử dụng api nghỉ ngơi như thế nào?

Bằng cách xử lý tài liệu như tài liệu: thực hiện các chỉnh sửa cục bộ và gửi kết quả trở lại máy chủ.

Giả sử rằng tài liệu này đã có sẵn tại /users/1/, chúng tôi sẽ chỉ gửi lại một đại diện với sở thích đã bị xóa ...

PUT /users/1/

{
  "_id": "1",
  "firstName": "Joe",
  "hobbies": [
   ],
}

Sử dụng PATCH thay vì PUT là tốt (miễn là chúng tôi đang gửi một tài liệu vá dưới dạng nội dung thư). Về mặt kỹ thuật, bạn cũng có thể sử dụng POST, nhưng POST không thực sự mang đến cho bạn bất kỳ lợi thế nào ở đây.

/users/:id/hobbies
/users/:id/hobbies/:id
. (vì nó sử dụng một khóa khác).

Bây giờ, nếu tài nguyên của bạn được thiết kế bằng liên kết

/users/:id/

Sau đó, chúng tôi vẫn sẽ sử dụng

{
  "_id": "1",
  "firstName": "Joe",
  "hobbies": [ { "href": "/users/1/hobbies/4" } ]
}
để thêm /xóa sở thích khỏi bộ sưu tập, nhưng nếu chúng tôi muốn sửa đổi bản đại diện của sở thích, thì chúng tôi sẽ gửi tin nhắn bằng /users/1/.

Nếu bộ sưu tập sở thích là một liên kết ...

/users/1/hobbies/4

Sau đó, chúng tôi sẽ thêm /xóa sở thích bằng cách gửi tin nhắn đến

{
  "_id": "1",
  "firstName": "Joe",
  "hobbies": "/users/1/hobbies"
}
.

Có thể giúp suy nghĩ về các trang web - bản trình bày HTML của trang web thường sẽ bao gồm các liên kết đến hình ảnh hoặc tập lệnh được tìm nạp và lưu trữ riêng biệt từ chính trang đó. Nếu chúng tôi muốn chỉnh sửa HTML, chúng tôi sẽ gửi yêu cầu bằng cách sử dụng mã định danh cho trang, nếu chúng tôi muốn thay đổi tập lệnh, chúng tôi sẽ gửi định danh cho tập lệnh.

    
1
2019-05-08 17: 58: 33Z
/users/1/hobbies
nguồn đặt đây