Tôi đang gặp khó khăn khi nghĩ về cách lập mô hình các nguồn tài nguyên phụ.
Lấy sách của tác giả làm ví dụ. Bạn có thể có N cuốn sách, mỗi cuốn chỉ có một tác giả.
/sách NHẬN
/sách ĐĂNG
/sách/id PUT
/sách/id XÓA
Cho đến nay rất đơn giản.
Cách thêm tác giả vào sách. Ít nhất trong ví dụ này chỉ xóa một tác giả cho mỗi cuốn sách
/sách/id/tác giả POST
Điều này làm tôi bối rối vì POST thường có nghĩa là tạo. Với tác giả đã được đặt, người dùng API có thể nghĩ rằng họ chỉ đang tạo một tác giả mới, trong khi thực tế là họ đang xóa tác giả cũ và thay thế bằng tác giả mới.
Tất cả những gì còn lại là
/sách/id/tác giả PUT
Nó có nghĩa là cập nhật tài nguyên tác giả của cuốn sách đó. Có ý nghĩa hơn. Nhưng nếu lần đầu tiên bạn không có tác giả thì sao? Không thực sự là một bản cập nhật mà là một sáng tạo ban đầu? Có lẽ chỉ coi đó là một bản cập nhật không có tác giả.
Đây có phải là một nguồn tài nguyên phụ không? Đây sẽ là một đối tượng phức tạp, vì vậy nó có ý nghĩa. Mặc dù tôi đoán bạn không thể sống thiếu sách của tác giả. Vì vậy, tôi không nên lập mô hình như một nguồn phụ và nói rằng bạn chuyển đối tượng tác giả khi tạo hoặc sửa đổi tài nguyên sách.
Những suy nghĩ cuối cùng. Tôi không nghĩ tôi sẽ mô hình hóa tác giả như một nguồn tài nguyên gốc. Vì vậy, ít nhất trong trường hợp này, họ sẽ sống mãi dưới nguồn tài nguyên sách. Mỗi cuốn sách chỉ có một tác giả.
Nhưng còn lần đầu tiên không có tác giả nào tồn tại Không thực sự là một bản cập nhật mà là bản tạo ban đầu thì sao?
sử dụng PUT/sách/id/tác giả
Việc tạo tác giả ban đầu đối với tôi là ổn. Vì bạn có thể sử dụng PUT/sách/client-supplied-id
Tạo sách có ID do khách hàng cung cấp, do đó bạn có thể tạo sách có tác giả được đại diện bởi một đoạn đường dẫn đã biết tác giả
.
Vì bạn đã viết rằng tác giả sẽ chỉ tồn tại như một phần không thể thiếu của một cuốn sách nên lược đồ URL này sẽ ổn.
Tôi là một lập trình viên xuất sắc, rất giỏi!