RailsでAPIが超簡単に作れるgrapeをちょっと調べてみた

June 18, 2014

もっと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

参考