LoginSignup
2
5

More than 5 years have passed since last update.

Rails consoleでPOSTを投げる

Last updated at Posted at 2016-10-14

やりたいこと

  1. APIなどのPOSTでリクエストを投げたときの動作をブラウザではなく、rails console上で確認したい。

手順

  1. postのリクエストにCSRF対策として、authencity_tokenを含める必要がある
  2. authencity_tokenをsessionメソッドから生成する
  3. authencity_tokenを含めてリクエストをPOSTで送信する
$ rails c

app.get 'リクエストを実行するページのURL(ログインページとか検索ページとか)'
token = app.session[:_csrf_token]
=> 'XXXXXXXX'

# or

token = app.response.body.match(/<[^<]+authenticity_token[^>]+value="([^"]+)"[^>]+>/)[1]
=>'XXXXXXXXX'
# rails4の場合
app.post 'リクエストするAPIのURL' , {authencity_token: token, 'data': :data} 
Started POST "リクエストするAPIのURL" for 127.0.0.1 at 2016-10-14 11:12:50 +0900

# rails5の場合
app.post 'リクエストするAPIのURL' , params: {authencity_token: token, 'data': :data} 

#略

=> 200

200がレスポンスで返ってきたらOK

app.getでページ移動の処理をしないとtoken = nilになってしまってた。

追記

コメントでrails5の挙動についてアドバイス頂いたので、rails5での挙動についても記載しました。

なお、これを書いた当時はconsole上でhttpリクエスト投げようと思ってましたが、普通に curl コマンド、もしくは http コマンドが便利だし、GUIベースで確認するならPostManとか使うほうが色々設定できて便利だと思っています。

2
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5