もっとgrapeを使いこなしたくて。とりあえず、勉強してみましたシリーズの小粒記事です。
簡単なセットアップ手順
途中まで書いたんですが、Ruby - grapeメモ - Qiita が本当にわかりやすいです。とりあえず、これをベースに気になったことを書いていきます。
パラメータのバリデーションと強制
params do requires :id, type: Integer optional :text, type: String, regexp: /^[a-z]+$/ group :media do requires :url end optional :audio do requires :format, type: Symbol, values: [:mp3, :wav, :aac, :ogg], default: :mp3 end mutually_exclusive :media, :audio end put ‘:id’ do
params[:id] is an Integer
end
namespace
namespaceは下記のエイリアスがある。状況によって使い分ければ良いらしい。
- group
- resource
- resources
- segment
namespace :statuses do params do requires :user_id, type: Integer, desc: “A user ID.” end namespace “:user_id” do desc “Retrieve a user’s status.” params do requires :status_id, type: Integer, desc: “A status ID.” end get “:status_id” do User.find(params[:user_id]).statuses.find(params[:status_id]) end end end
header
headerはheaderまたはenvから取得できる。
get do error!(‘Unauthorized’, 401) unless headers[‘Secret-Password’] == ‘swordfish’ end
get do error!(‘Unauthorized’, 401) unless env[‘HTTP_SECRET_PASSWORD’] == ‘swordfish’ end
cookies
cookiesも簡単にset,getできる。
class API < Grape::API get ‘status_count’ do cookies[:status_count] ||= 0 cookies[:status_count] += 1 { status_count: cookies[:status_count] } end
delete ‘status_count’ do { status_count: cookies.delete(:status_count) } end end
参考
- intridea/grape
- Ruby - grapeメモ - Qiita : 本当にわかりやすかったです!ありがとうございます。
- ActiveRecord使い方まとめ | Scimpr Blog