初心者エンジニアが何か書く

〜技術ブログメイン〜

RailsでWebAPIを作る[ JSONP ]

 

RailsでWebAPIを超簡単に作った - 初心者だけど 何か書く

 

[前回の続き]

前回はAmazonWebService上にRailsの環境設定をした所までだった.

今回はRailsで実装したコードと参照したURLを紹介.

 

参照した良記事

Rails format.anyのContent-Typeを指定する - 130単位

 

 

開発環境

  • Rails version: 4.0
  • Server: CentOS (FreeTrial版)
  • Ruby version: 2.0
  • 使用したライブラリ

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

 

f:id:inobo52:20140913170406p:plain

Dribbble - Main Page of Rubee by Ben Lee