読者です 読者をやめる 読者になる 読者になる

assaulter's diary

最近はバイクブログと化している...

RailsでAPIサーバー用プロジェクトを作成する

仕様

タスクをjson形式でやりとりする。

API

タスク一覧:GET /tasks
タスク(個別):GET /tasks/:id
タスク登録:POST /tasks
タスク更新:PATCH /tasks/:id
削除:DELETE /tasks/:id

Rails-API Gemを使ってプロジェクトを作成する

rails-api/rails-api · GitHub

こちらを仕様すると、View周りのassets等が排除されたシンプルなRailsプロジェクトが作成されます。

View周りはMV*なJSのフレームワークに任せるっていうの、最近流行ってるんですかね?

gem を追加する
gem install rails-api

rails-apiを用いてプロジェクトを作成する
rails-api new todo_api

好みに応じて、Gemfileを編集し、bundle installする。

僕はテスト用にfactory_girl_rails, rspec, rspec-railsを追加しました。

テーブル作成
rails g scaffold task name:string
rake db:migrate

これでコントローラも作成されます。というかこの時点で

Chrome Web Store - Advanced REST client

等を使って叩くと動きますw

あとは

# create時にpostされたパラメータに対して適用するメソッド
def task_params
  allow = [:name]
  params.require(:task).permit(allow)
end

# POST /tasks
# POST /tasks.json
# params example
# {"task":
#   {"name": "sample"}
# }
def create
  @task = Task.new(task_params)

  if @task.save
    render json: @task, status: :created, location: @task
  else
    render json: @task.errors, status: :unprocessable_entity
  end
end

一応ガードをかけておきます。

次はFactory girlを使ったRSpecの書き方かな・・・