2008-09-27 40 views

Trả lời

11

Thông thường, các API cho ứng dụng của tôi thực sự được xây dựng trên cùng một tài nguyên tạo nên giao diện HTML. Đối với một số (không phải tôi), có thể chỉ sử dụng mã xuất phát từ máy phát điện giàn giáo - nhưng bất kể tôi viết tùy chỉnh hay để máy phát xử lý nó, có rất ít trường hợp tôi chỉ hiển thị tài nguyên cho chương trình API và không cho người dùng cuối xem.

Phiên bản không phải là vấn đề đối với các ứng dụng mà tôi đã tạo cho đến nay, nhưng tôi có thể nghĩ ra hai cách để triển khai nó.

1) Bạn có thể thêm các tuyến đường với tiền tố 'v1,' 'v2,' vv, mà thiết lập một tham số mà bạn có thể sau đó truy cập vào bộ điều khiển để xác định quá trình xử lý để xảy ra:

trong tuyến đường. rb:

map.resources :posts, :path_prefix => '/:version' 

trong posts_controller.rb

class PostsController < ApplicationController 
    def index 
    respond_to do |format| 
     format.xml do 
     if params[:version] == 'v1' 
      # ... 
     else 
      # ... 
     end 
     end 
    end 
    end 
end 

2) Bạn cũng có thể cân nhắc thêm một định dạng phản ứng tùy chỉnh cho mỗi phiên bản

trong initializers/mime_types.rb

Mime::Type.register_alias "application/xml", :v1 
Mime::Type.register_alias "application/xml", :v2 

trong posts_controller.rb

class PostsController < ApplicationController 
    def index 
    respond_to do |format| 
     format.v1 do 
     # ... 
     end 
     format.v2 do 
     # ... 
     end 
    end 
    end 
end 

Cựu sẽ cung cấp cho bạn các URL như example.com/v1/posts.xml và example.com/v2/ posts.xml; sau này sẽ cung cấp cho bạn các URL như example.com/posts.v1 và example.com/posts.v2

+0

Một tùy chọn khác cho phiên bản nếu logic nghiệp vụ thực tế khác nhau là sử dụng các tuyến đường có tên. – Kris

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