RailsでのAPI開発基礎のメモ


はじめに

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でチェックしてくれるのでここでは外す必要があります。

以上です。