Tôi hiện đang có một API web WCF mà tôi đã chia thành hai phiên bản. Phiên bản đầu tiên chạy tại api.mysite.com. Thứ hai hiện không được xuất bản cho sản xuất.Cách tốt nhất để phiên bản một API Web WCF là gì?
Tôi muốn có cách xuất bản API thứ hai sao cho các yêu cầu đối với phiên bản đầu tiên không bị gián đoạn. Ý tưởng của tôi là thêm tiêu đề x-api-version
và định tuyến nội bộ yêu cầu tới API được chỉ định. Nếu không có tiêu đề, sau đó mặc lên phiên bản 1. Tôi coi thêm /v1
hoặc /v2
đến đầu của con đường để phân định các phiên bản như vậy mà một yêu cầu đến v1 hoặc v2 có thể trông giống như:
http://api.mysite.com/v1/authentication/login
http://api.mysite.com/v2/auth/login
Thông báo trước là các yêu cầu không có phiên bản phải hoạt động và mặc định cho phiên bản 1 (hoặc bất kỳ phiên bản nào tôi chỉ định).
Mặc dù điều này nghe có vẻ tốt (với tôi ít nhất), tôi không chắc chắn về cách thức được khuyến nghị thực hiện điều này. Tôi biết rằng tôi luôn có thể thực hiện một số loại proxy ngược lại nhưng tôi hy vọng rằng các giải pháp của tôi có thể là một giải pháp lập trình. Cấu hình ít được yêu cầu trên một phần của máy chủ, thì càng tốt. Nếu bất cứ ai có bất kỳ ý tưởng hoặc liên kết đến blog/hướng dẫn, đó sẽ là tuyệt vời!
Cảm ơn trước!
Đây là cách google thực hiện ** v = 1.0 ** 'http: //ajax.googleapis.com/ajax/services/search/web? V = 1.0 & rsz = 8 & q = stackoverflow' –
Tôi thấy 'tiêu đề phiên bản' và 'phiên bản URI' là phương pháp tương tự, và tôi sẽ hỗ trợ cả hai. Có nó trong URI là rất hữu ích cho các nhà phát triển - nó làm cho nó dễ dàng để thử nghiệm với các dịch vụ thông qua một trình duyệt. Tôi cũng sẽ hỗ trợ một 'URI không phiên bản' chuyển hướng sang phiên bản 'đang hoạt động' hiện tại (thường là phiên bản mới nhất, nhưng bạn có thể có các kịch bản nơi bạn đặt phiên bản mới nhưng không kích hoạt chúng công khai). Nó thực sự phụ thuộc vào tiêu chí của bạn. – Adam
Sau khi xem chi tiết triển khai, tôi tin rằng tôi sẽ phải dựa nhiều hơn vào hướng tiếp cận URI một cách nghiêm ngặt do sự dễ dàng về kỹ thuật.Tuy nhiên, tôi tin rằng tôi có thể thực hiện phương pháp này trong khi vẫn đáp ứng yêu cầu ban đầu của tôi về việc không vi phạm các khách hàng của API hiện tại. –