[Rails] API設計模式*
設計模式
-
- Rails API
- 原生預設的模式,使用原本的route控制
- 若是新系統,推薦使用
- Rails API
-
- Grape API
- 另外寫的模式
- 原有系統已經有一定規模,推薦使用,不會影響到既有系統
- Grape API
1. Rails API 實作
rack-cors 設定
Access-Control-Allow-Origin 問題解決
gem 'rack-cors', require: 'rack/cors'
# config/application.rb
module YourApp
class Application < Rails::Application
config.middleware.insert_before 0, Rack::Cors do
allow do
origins '*'
resource '*', :headers => :any, :methods => [:get, :post, :options]
end
end
end
end
若是使用production也想要給develop使用的話需要加入此行
# production.rb
config.serve_static_assets = true
還是不行的話 確認一下responce的header有可能需要設定在nginx.conf 加入Access-Control-Allow-Origin *
location @static_asset {
gzip_static on;
expires max;
add_header Cache-Control public;
add_header ETag "";
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Request-Method *;
}
No Route 處理方式
###
2. Grape API 實作
參考
- https://github.com/cyu/rack-cors/issues/33
- https://stackoverflow.com/questions/25945419/how-do-i-configure-access-control-allow-origin-with-rails-nginx-and-passenger
- https://coderwall.com/p/vifllw/json-api-response-for-no-route-matches
留言