Ví dụ tôi có các thực thể: Khách hàng, Báo cáo. Khách hàng có thể có nhiều Báo cáo và tôi nghĩ rằng điểm cuối cho một quản lý Báo cáo duy nhất nên được lồng vào nhau như sau:
/clients/{client_id}/reports/{report_id}
Đối với tất cả các báo cáo của một khách hàng, dự kiến sẽ có:
/clients/{client_id}/reports
Nhưng làm thế nào để tìm một điểm cuối để có được tất cả các Báo cáo của tất cả các Khách hàng để giữ API nhất quán và được thiết kế tốt.
Cách tiếp cận của tôi:
- (Tôi đã thấy nó trong một số google api) sử dụng "-" thay vì nó và phân tích thành "tất cả":
/clients/-/reports
Điều này giữ định dạng điểm cuối giống nhau, nhưng trông hơi bất thường, không thể tìm thấy bất kỳ rfc nào đề xuất theo cách này.
- Tạo một điểm cuối riêng biệt cho tất cả các báo cáo:
/reports
Nhưng để nhận được Báo cáo của Khách hàng, nó vẫn:
/clients/{client_id}/reports
- Tái cấu trúc điểm cuối để làm cho "máy khách" không phải là cha, mà chỉ là một tham số bộ lọc:
/reports?client={client_id}
- báo cáo của một khách hàng
/reports
- báo cáo của tất cả khách hàng
Trong trường hợp thêm một điểm cuối mới để đăng báo cáo cho một khách hàng cụ thể, nó có thể trông xấu, bởi vì đó sẽ là một yêu cầu POST với một tham số trong URL.
Có bất kỳ đề xuất ý tưởng khác?