Để làm cho giải pháp của bạn có thể sử dụng lại và linh hoạt, tôi khuyên bạn nên triển khai tham số truy vấn "bộ lọc". Trong đó, bạn có thể đặt bất kỳ lĩnh vực theo yêu cầu của khách hàng:
GET /customers/123?fields=id,first_name,last_name,email
cách đó, nếu sau này bạn cần phải tạo ra một bản tóm tắt khác nhau cho một nhiệm vụ khác nhau, bạn sẽ không có bất cứ điều gì để thay đổi.
Tôi sẽ không đề xuất /customers/123/summary
vì nó không linh hoạt. Nó có thể là ok cho một trường hợp, nhưng nếu khách hàng cần truy cập các thuộc tính khác nhau cho một trường hợp khác, bạn sẽ phải tinh chỉnh tài nguyên (rất có thể bằng cách trả về nhiều trường hơn mức cần thiết). Nếu bạn muốn "giấu" các tên trường, có lẽ một sự thay thế có thể là một cái gì đó như thế này:
GET /customers/123?view=DESCRIPTION
đâu "DESCRIPTION
" sẽ mô tả các loại tóm tắt. Ví dụ:
GET /customers/123?view=addresses_only // eg. returns billing and home address
GET /customers/123?view=short // eg. returns only id, first name, last name
Điều này vẫn linh hoạt vì bạn có thể dễ dàng tạo chế độ xem mới.
Nguồn
2013-04-12 17:45:01
Cảm ơn đề xuất và tôi có thể thấy nó linh hoạt như thế nào. Một mối quan tâm tôi có với phương pháp này, là nó giả định người tiêu dùng biết các lĩnh vực sẵn có cho tài nguyên khách hàng. – BobJ
Trong cả hai trường hợp, cho dù đó là/tóm tắt hay /? Field = ..., bạn vẫn sẽ cần chia sẻ URL với ứng dụng khách. Họ không cần phải biết các lĩnh vực có sẵn nếu bạn chỉ cần cung cấp cho họ các URL chính mình. Tôi đã cập nhật bài đăng của mình bằng một giải pháp khả thi khác. –
cảm ơn tôi thích? View = phương pháp tiếp cận ngắn – BobJ