Rails提供了RESTful資源,但您是否將這些用於實際的公共API?如果是這樣,你將如何完成你的API的版本,即example.com/api/v2/foo/bar
?在Rails上設計RESTful公共API的最佳實踐是什麼?
9
A
回答
11
通常,我的應用程序的API實際上構建在構成HTML界面的相同資源上。對於一些人(不是我),這可能只是使用腳手架生成器發出的代碼 - 但無論我是自定義編寫還是讓生成器處理它,都有很少的情況下我只將資源暴露給編程API而不是最終用戶視圖。
版本控制對於我到目前爲止建立的應用程序來說並不是問題,但我可以想到兩種實現方法。
1)你可以使用前綴「V1」,「V2」等,即設置的參數,然後可以在控制器進入指定要發生的處理添加路由:
在路線。 RB:
map.resources :posts, :path_prefix => '/:version'
在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)你也可以考慮增加一個自定義的響應格式爲每個版本
在初始化/mime_types.rb
Mime::Type.register_alias "application/xml", :v1
Mime::Type.register_alias "application/xml", :v2
在posts_controller.rb
class PostsController < ApplicationController
def index
respond_to do |format|
format.v1 do
# ...
end
format.v2 do
# ...
end
end
end
end
前者會給你喜歡example.com/v1/posts.xml和example.com/v2/網址posts.xml;後者會爲您提供像example.com/posts.v1和example.com/posts.v2的網址
相關問題
- 1. RESTful API最佳實踐
- 2. 什麼是REST API和用戶角色設計最佳實踐?
- 3. RESTful API中的錯誤最佳實踐
- 4. 設計API時的最佳實踐
- 5. 設計Cassandra數據模型的最佳實踐是什麼?
- 6. 數據庫設計的最佳實踐是什麼?
- 7. 軟件UI設計的最佳實踐是什麼?
- 8. 最佳VHDL設計實踐
- 9. 什麼是服務器設計模式/最佳實踐的最佳來源?
- 10. 在Rails中測試模型的最佳實踐是什麼?
- 11. 在Rails中生成「widgetized」內容的最佳實踐是什麼
- 12. 窯庫的最佳實踐是什麼?
- 13. PHP中的最佳實踐是什麼?
- 14. 什麼是您的CoreLocation最佳實踐?
- 15. 與不同用戶(公司)構建REST API的最佳實踐是什麼?
- 16. 實現此API設計的最佳工具是什麼?
- 17. 什麼是CDN最佳實踐?
- 18. register_shutdown_function() - 什麼是最佳實踐?
- 19. 什麼是MEF最佳實踐?
- 20. 什麼是一些Sharepoint最佳實踐?
- 21. MySQL索引 - 什麼是最佳實踐?
- 22. 什麼是一些OOoBasic最佳實踐?
- 23. 什麼是AJAX最佳實踐?
- 24. 什麼是.htaccess RewriteRule最佳實踐?
- 25. CSS3 - 性能最佳實踐是什麼?
- 26. Ruby on Rails 3佈局的最佳實踐是什麼?
- 27. 什麼是設計和實現網絡協議的最佳實踐?
- 28. 實踐中的Android ADK開發 - 什麼是最佳實踐?
- 29. 呼叫API的最佳實踐是什麼?
- 30. 調用外部API的最佳實踐是什麼?
如果實際業務邏輯不同,另一種版本控制方法是使用名稱空間路由。 – Kris 2009-06-08 13:38:56