Đối với trang web tôi đang làm việc, chúng tôi đang trong quá trình cải thiện URL của chúng tôi cho một loại tài nguyên - cụ thể, chuyển từ ID số sang các chuỗi mô tả duy nhất. Một ví dụ tương tự sẽ được chuyển từ việc xác định người dùng bằng ID cơ sở dữ liệu số để xác định chúng bằng tên người dùng (không phải trường hợp cụ thể của chúng tôi, nhưng là analagous). Vì vậy, một URL để truy cập thông tin của người dùng sử dụng để trông giống như:REST - hỗ trợ nhiều số nhận dạng có thể
/users/48573
Và bây giờ có vẻ như
/users/thisisausername.
Vấn đề duy nhất là chúng tôi vẫn cần để có thể lấy chúng thông qua ID số bằng cách nào đó , cho người tiêu dùng cũ của API. Chúng tôi không cần các URL REST để chuyển hướng (ví dụ: /users/48573
không được chuyển hướng đến /users/thisisausername
), chúng tôi chỉ cần một phương pháp để có được dữ liệu phù hợp bằng cách sử dụng số nhận dạng cũ. Giải pháp phải cung cấp một cách thay thế để truy cập thông tin người dùng (tiện lợi bao gồm mã định danh, tên người dùng mới) theo ID hoặc chỉ truy cập tên người dùng theo ID. Một số giải pháp có thể có thể là:
- Sử dụng nút để chỉ định một số phương pháp nhận dạng thay thế, ví dụ:
/users/byid/48573
- Sử dụng thông số truy vấn để chỉ định một số phương pháp nhận dạng thay thế, ví dụ:
/users/48573?fetchby=id
hoặc/users/48573?byid=true
- Xử lý tên người dùng theo id làm tài nguyên khác, ví dụ:
/identifiers/username/48573
Điều nào trong số này (nếu có) gần nhất với REST phù hợp? Làm thế nào bạn sẽ đối phó với vấn đề này?
tôi đã kết thúc thực hiện truy cập thông qua các lĩnh vực phi chính-identifier như một tìm kiếm. Giải pháp này cho phép tìm nạp nhiều loại tài nguyên qua nhiều trường, trong khi vẫn duy trì một loại làm số nhận dạng chính. Để nhất quán, API "tìm kiếm" trả về danh sách. Vì vậy, cách chính thức để truy cập người dùng là: /người dùng/thisisausername và tiếp cận bởi ID, ta có:? /người dùng id = 48.573 Tương tự như vậy, chúng ta có thể tìm kiếm trên một số lĩnh vực khác nhau , như trong: /người dùng? firstName = Kelly Cảm hứng từ: http://jwyseur.blogspot.com/2008/12/uri-design-for-rest.html (xem "tìm kiếm tài nguyên") –
Vì vậy, bạn punted vào bộ nhớ đệm? Tôi có cùng vấn đề với bạn, nhưng không thể giải quyết vấn đề thông qua các tham số truy vấn loại bỏ một trong những lợi ích chính của API REST. Tôi thích đề xuất đầu tiên của bạn có dấu đầu dòng ... – HDave