やろうやろうと思ってやっていなかったのでやってみた。
Grapeについて
GrapeはRubyでREST APIサーバー書くときに使えるGem。
そのままRackでも動かせるし、SinatraとかRailsにマウントもできる。
使い方
Railsで使うときの使い方を紹介します。
環境は、
まずは普通にrailsアプリを作る
rails new hoge -d mysql
Gemfileに書いて
gem 'grape'
インストール
bundle install
事前にモデルを作っておく
rails g model huga value:string
ディレクトリはこんな感じで作るらしい
mkdir -p app/api/huga
vim app/api/huga/api.rb
実装はこんな感じ
module Hugas
class API < Grape::API
format :json
resource :hugas do
get '/' do
Huga.all
end
params do
requires :value, type: String
end
post '/' do
Huga.create({
value: params[:value]
})
end
end
end
end
リソースのブロックの中にget,post…とかって書いていく。
paramsを書いとくとバリデートとかもできる。
設定周り
- ルーティング
config/route.rbに以下のように追記
mount Hugas::API => '/'
- パスを通す
config/application.rbに追記
config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb')
config.autoload_paths += Dir[Rails.root.join('app', 'api', '*')]
- migrate(モデル作ったらすぐやっておいても可)
rake db:create && rake db:migrate
実行してみる
rails s
トップページはいつものRails画面のはずなので、「http://localhost:3000/hugas」にアクセスして空のJSONが返ってきてれば多分うまくいっている。
Chromeのpostmanとか使ってデータを登録してみる。
うまくいってるっぽい
他にも認証周りとかいろいろできるらしいので、もっと普通に使ってみたいところ。
ただ、そんなに規模が大きくないならSinatraで書くのと大差ない気もした
おまけ
ついでに前から触りたかったAngularJSを使ってAPIにアクセスするアプリを作ってみた。
といってもpublicの下にゴリゴリ書いてアクセスするだけだけれどもw
お題は異動になった同僚の送別会で渡す物を決めるために、候補の中からどれがいいか投票するアプリってやつ。
ソースはgithubにあります。
https://github.com/syguer/voter
そもそも設計がおかしいのを除いても多分色々イケてないのでプルリクお待ちしてます!