Thực tiễn tốt nhất cho phiên bản tài nguyên REST là đưa thông tin phiên bản vào tiêu đề Chấp nhận/Loại nội dung của yêu cầu HTTP để nguyên URI.Phiên bản tài nguyên REST dễ dàng trong triển khai dựa trên JAX-RS?
Đây là yêu cầu mẫu/đối phó với REST API để lấy thông tin hệ thống: sự chú ý
==>
GET /api/system-info HTTP/1.1
Accept: application/vnd.COMPANY.systeminfo-v1+json
<==
HTTP/1.1 200 OK
Content-Type: application/vnd.COMPANY.systeminfo-v1+json
{
“session-count”: 19
}
Pay rằng phiên bản được quy định trong định dạng MIME.
Dưới đây là một yêu cầu/đáp ứng cho phiên bản 2:
==>
GET /api/system-info HTTP/1.1
Accept: application/vnd.COMPANY.systeminfo-v2+json
<==
HTTP/1.1 200 OK
Content-Type: application/vnd.COMPANY.systeminfo-v2+json
{
“uptime”: 234564300,
“session-count”: 19
}
Xem http://barelyenough.org/blog/tag/rest-versioning/ để biết thêm lời giải thích và ví dụ.
Có thể thực hiện phương pháp này dễ dàng trong các triển khai dựa trên JAX-RS được nhắm mục tiêu Java, chẳng hạn như Jersey hoặc Apache CXF không?
Mục tiêu là có một số lớp @Resource có cùng giá trị @Path nhưng phân phát yêu cầu dựa trên phiên bản thực tế được chỉ định trong loại MIME?
Tôi đã xem xét JAX-RS nói chung và Jersey trong phân khúc và không tìm thấy hỗ trợ cho điều đó. Jersey không có cơ hội đăng ký hai tài nguyên với cùng một đường dẫn. Thay thế cho lớp WebApplicationImpl cần phải được triển khai để hỗ trợ điều đó.
Bạn có thể đề xuất điều gì đó không?
LƯU Ý: Cần có nhiều phiên bản của cùng một tài nguyên cùng một lúc. Các phiên bản mới có thể đưa ra những thay đổi không tương thích.
Điều này chắc chắn KHÔNG thực hành tốt nhất để phiên bản API. Cách tốt nhất là KHÔNG có phiên bản và chỉ thực hiện các thay đổi tương thích. Tạo nhân tạo các loại MIME mới cho những thay đổi mà mọi khách hàng hợp lý cần xử lý tự động (thêm thẻ/khóa mới vào dữ liệu của bạn) không phải là RESTful trong cuốn sách của tôi. –
Vâng, KHÔNG phải lúc nào cũng có thể thực hiện các thay đổi tương thích. Hơn nữa ,, trong trường hợp của tôi, nhiều phiên bản tài nguyên REST cần được hỗ trợ đồng thời. Theo như bản sắc tài nguyên phải được bảo quản URI phải thay đổi giống nhau. Phiên bản mới là bản trình bày mới của tài nguyên, tức là loại MIME mới. –
Cảm ơn bạn đã bình luận của bạn, tôi sẽ cập nhật câu hỏi ban đầu để cụ thể hơn –