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

RailsでAPIが超簡単に作れるgrapeをちょっと調べてみたもっと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

参考

Pocket
LINEで送る

You may also like...