Tôi đang thiết kế API REST thực dụng và tôi hơi băn khoăn về cách tốt nhất để thêm các thực thể hiện có vào bộ sưu tập. Mô hình miền của tôi bao gồm Dự án có bộ sưu tập Trang web. Đây là một mối quan hệ nhiều-nhiều nghiêm ngặt và tôi không cần phải tạo một thực thể mô hình hóa rõ ràng mối quan hệ (ví dụ ProjectSite).
API của tôi sẽ cho phép người tiêu dùng thêm Trang web hiện tại vào Dự án. Nơi tôi đang gác máy là dữ liệu duy nhất tôi thực sự cần là ProjectId và SiteId. Ý tưởng ban đầu của tôi là:
1. POST myapi/projects/{projectId}/sites/{siteId}
Nhưng tôi cũng nghĩ về
2. POST myapi/projects/{projectId}/sites
với một thực thể Trang web được gửi dưới dạng nội dung JSON.
Tùy chọn 1 đơn giản và hoạt động nhưng không cảm thấy hoàn toàn đúng và tôi có các mối quan hệ khác không thể theo mô hình này để nó thêm sự không nhất quán vào API của tôi.
Tùy chọn 2 cảm thấy tốt hơn nhưng dẫn đến hai mối quan tâm:
- Tôi có nên tạo Trang web hay ném ngoại lệ nếu Trang mới được đăng (SiteId = 0) không?
- Vì tôi chỉ cần ProjectId và SiteId để tạo mối quan hệ, nên Trang có thể được đăng với dữ liệu sai hoặc thiếu cho các thuộc tính khác.
Tùy chọn thứ 3 là cung cấp một điểm cuối đơn giản chỉ để tạo và xóa mối quan hệ. Điểm cuối này sẽ mong đợi một tải trọng JSON chỉ chứa ProjectId và SiteId.
Bạn nghĩ sao?