RailsでWebAPIを作る[ JSONP ]
RailsでWebAPIを超簡単に作った - 初心者だけど 何か書く
[前回の続き]
前回はAmazonWebService上にRailsの環境設定をした所までだった.
今回はRailsで実装したコードと参照したURLを紹介.
参照した良記事
Rails format.anyのContent-Typeを指定する - 130単位
開発環境
Rails上で実行したコマンド
rails g controller event list
コントローラーファイルeventとアクションlistを生成
これで,http://(Amazon指定のURL)/event/listでページにアクセス可能.
このURLにアクセスすると,JSONP がレスポンスされるようにする.
生成したコントローラーファイル(event_controller.rb)を実装
重要なのは render_json関数の中の2行だけ.この二つを指定するとJSONPになるみたい
response.headers['Content-Type'] = 'application/javascript; charset=utf-8'
format.json { render :json => json_data,callback: callback_method}
render_json関数全体
def render_json(json_data) response.headers['Content-Type'] = 'application/javascript; charset=utf-8' callback_method = params[:callback] respond_to do |format| format.html format.json { render :json => json_data,callback: callback_method} end end
コード全体
[ 追記 ]
重要なことを書き忘れていた.このコードを /app/controller/appilcation_controller.rbに記述しないと,クロスサイトスクリプティングエラーになっちゃう.
class ApplicationController < ActionController::Base
# JSONPの実装に必要なコード
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
after_filter :set_access_control_headers
def set_access_control_headers
headers['Access-Control-Allow-Origin'] = '*'
headers['Access-Control-Request-Method'] = '*' end