2010-04-20 18 views
8

Tôi đang thiết kế một API REST cho một ứng dụng web. Tôi muốn rõ ràng phiên bản API, để giao diện có thể được thay đổi trong tương lai mà không phá vỡ các dịch vụ hiện có. Vì vậy, trong API v1.0 của tôi, tôi muốn xác định rõ ràng nó là API v1.0, để tôi tự do phát hành phiên bản v1.1 trong tương lai với các thay đổi đột phá.Thực tiễn không tốt để đặt dấu chấm trong đường dẫn URI?

Câu hỏi của tôi là, một khoảng thời gian trong thành phần đường dẫn của URI có phải là thực tế không?

ví dụ: Có lý do chính đáng nào để không sử dụng http://example.com/myapi/v1.0/services làm URI cho dịch vụ của tôi không?

Trả lời

10

Đưa một khoảng thời gian trong URI là hoàn toàn tốt đẹp. Đặt một số phiên bản trong một URI chắc chắn không phải là một thực hành tốt nhất.

Here là lý do tại sao và here là bài viết hay về chủ đề của một người thông minh hơn tôi nhiều.

+0

Cảm ơn Darren lần nữa. Thông qua liên kết của bạn, câu trả lời của Shonzilla cho câu hỏi này: http://stackoverflow.com/questions/389169/best-practices-for-api-versioning đã thuyết phục tôi rằng phiên bản có lẽ là một ý tưởng tồi. Một mối quan ngại tôi có là liệu một khách hàng không có trình duyệt, ví dụ: một trang web PHP tiêu thụ dịch vụ của tôi sẽ xử lý một chuyển hướng http, nếu tôi sử dụng phương pháp đó để xử lý các thay đổi đột phá? – saille

-1

Tôi nghĩ đó là một ý tưởng hay. Tôi đã nhìn thấy một số dịch vụ nghỉ ngơi mà làm điều này.

3

Bạn hoàn toàn có thể chấp nhận sử dụng dấu chấm trong đường dẫn URI. Nó cũng hợp lệ theo RFC 3986 section 2.3.

1

Tôi nghĩ khác với những người khác ... Tôi không nghĩ đó là cách hay để sử dụng nó trên url.

IMHO nó tốt hơn nếu bạn phiên bản trên Tiêu đề loại nội dung.

Ví dụ: nếu bạn đang sử dụng ứng dụng/xml:

Loại nội dung: application/v1.0 + xml.

Sử dụng Loại nội dung, nó cũng chỉ ra rằng bản thân tài nguyên được phiên bản. Mặc dù nếu bạn sử dụng nó trên url, có vẻ như bạn đang phiên dịch dịch vụ (có vẻ như không phải vậy) và nếu bạn đang thay đổi dịch vụ, có thể bạn sẽ thay đổi url, vì vậy bạn không cần phiên bản con số.

EDIT: Bạn cũng nên sử dụng nó trên Accept Header, không chỉ trên Loại nội dung.

+1

Xem xét kỹ hơn câu hỏi và câu trả lời. Hầu hết các câu trả lời là đề cập đến việc sử dụng một khoảng thời gian trong Url, không có gì để làm với phiên bản. Tôi đưa nó lên, nhưng đó không phải là câu hỏi ban đầu. –

+0

Ngay cả tho nó không phải là câu hỏi, tôi đánh giá cao nhận xét của bạn - đó là một gợi ý rất tốt. – saille

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