2011-10-01 24 views
5

Tôi đang sử dụng Django để triển khai API riêng tư còn lại và tôi không chắc chắn về cách xử lý các phiên bản API khác nhau trên chương trình phụ trợ.Làm thế nào để triển khai phụ trợ api với nhiều phiên bản

Có nghĩa là, nếu tôi có 2 phiên bản của API, mã của tôi trông như thế nào? Tôi có nên có các ứng dụng khác nhau xử lý các phiên bản khác nhau không? Các chức năng khác nhau có nên xử lý các phiên bản khác nhau không? Hoặc tôi chỉ nên sử dụng nếu báo cáo cho khi một phiên bản khác với một phiên bản khác?

Tôi có kế hoạch nêu rõ phiên bản trong Tiêu đề.

Cảm ơn

Trả lời

3

Bạn không cần phiên bản API REST. Với REST, việc tạo phiên bản diễn ra trong thời gian chạy hoặc thông qua cái mà người ta có thể gọi là 'quy tắc mở rộng tải trọng phải bỏ qua' hoặc thông qua thương lượng nội dung.

'quy tắc tiện ích tải trọng phải bỏ qua' tham chiếu đến khía cạnh bạn xây dựng vào thiết kế thư của mình. 'Phải bỏ qua' có nghĩa là một phần mềm xử lý thông điệp của định dạng đã cho phải bỏ qua bất kỳ cấu trúc cú pháp không xác định nào. Đây là những gì chúng ta đều biết từ HTML và những gì làm cho nó có thể chèn tất cả các loại thẻ ưa thích vào một trang HTML mà không cần phân tích cú pháp nghẹt thở.

'Phải bỏ qua' cho phép bạn phát triển khả năng của dịch vụ bằng cách thêm nội dung vào những gì bạn đã gửi mà không xem xét các khách hàng chỉ hiểu các phiên bản cũ hơn.

Thương lượng nội dung đề cập đến cơ chế tích hợp HTTP trong việc thương lượng đại diện thực tế mà máy chủ gửi đến một ứng dụng khách đã cho lúc chạy. Kịch bản tiêu biểu là: Khách hàng gửi tiêu đề Chấp nhận trong yêu cầu để quảng cáo những gì họ có khả năng và máy chủ chọn đại diện để gửi lại dựa trên các khả năng này. Nhưng cũng có các biến thể của chủ đề này (xem ở đây để biết chi tiết: http://www.w3.org/Protocols/rfc2616/rfc2616-sec12.html).

Thương lượng nội dung cho phép thay đổi không tương thích, có nghĩa là tôi có thể phát triển dịch vụ của mình để có thể gửi các phiên bản cũ và mới không tương thích và dựa trên tiêu đề Chấp nhận dịch vụ của tôi.

Tóm lại: với cả hai cách tiếp cận, API của bạn vẫn như cũ. Không cần phải thực hiện bất kỳ phiên bản nào ở cấp API - đặc biệt là không bao gồm các mã định danh phiên bản thường được đề xuất (nhưng hoàn toàn sai) trong các URI (nhớ, bạn đang làm REST ở đây, không phải SOAP!)

+0

Làm cách nào bạn xử lý ngược sự thay đổi mô hình/cơ sở dữ liệu không tương thích, trong khi cũng cho phép các khách hàng cũ/được triển khai tiếp tục làm việc trong giai đoạn chuyển tiếp? –

Các vấn đề liên quan