はじめに
RailsでAPIを作成する機会があったので忘れないように
簡単にまとめようかと思います。
1、ルーティングの記述
routes.rb
post 'api/sampleApi' => 'api#sampleApi'
POSTでapiのアクションを叩くルーティングを設定。
2、コントローラの記述
各処理で行っていることをコメントで以下に記述しました。
api_controller.rb
class ApiController < ApplicationController
# JSONの読み込み
require 'json'
# CSRFチェックで引っかからないよう記述
protect_from_forgery except: [:sampleApi]
def sampleApi
# 正常処理時のステータス200をセット
rs = {:code => 200}
begin
# JSONのパース
json_request = JSON.parse(request.body.read)
# 要素へのアクセス(今回はkeyがparamsの値が必要だとする)
parameters = json_request["params"]
# 以下にAPIで行う処理を書く
sample_user = User.new(parameters)
sample_user.save!
rescue => e
# エラーが発生した場合はステータス500とエラーメッセージをセット
rs = {:code => 500, :error => e.message}
end
# JSONでレスポンスを返す
render json: rs
end
end
3、補足:CSRF(クロスサイトリクエストフォージェリ)とは
Webアプリケーションの脆弱性、または脆弱性を狙った攻撃の一種。
本来拒否すべき他のサイトからのリクエストを受信・処理してしまう。
参考:https://www.trendmicro.com/ja_jp/security-intelligence/research-reports/threat-solution/csrf.html
RailsはCSRFをdefaultでチェックしてくれるのでここでは外す必要があります。
以上です。