Help us understand the problem. What is going on with this article?

rails grapeを使ったAPI作成

More than 1 year has passed since last update.

grapeを使ってAPIを作成したので、備忘録として記事にする

環境

macbook pro
Majavo
rails 4.2.4
ruby 2.1.0

grepのinstall

Gemfileに以下を追加した後、bundle install

gem 'grape'

ディレクトリ構造

以下のようなディレクトリ構造にする
ディレクトリ構造がきちんとなっていないとうまくできないので
出来るだけ、このまま行った方が良いです。

app
├apis
│  ├api
│   ├──root.rb
│   └ver1
│    ├ Tests.rb
│    └ root.rb

Path等の設定

config/routes.rbに以下を追加

routes.rb
mount API::Root => '/'

config/application.rbに以下を追加

application.rb
config.paths.add File.join('app','apis'), glob: File.join('**', '*.rb')
config.autoload_paths += Dir[Rails.root.join('app', 'apis', '*')]

api/root.tbに以下を追加

api/root.rb
module API
    class Root < Grape::API
        #http://localhost:3000/api
        prefix 'api'
        format :json

        mount API::Ver1::Root
    end
end

api/ver1/root.rbに以下を追加

api/ver1/root.rb
module API
    module Ver1
        class Root < Grape::API
            #http://localhost:3000/api/ver1
            format :json

            mount API::Ver1::Tests
        end
    end
end

APIの作成

Tests.rb
module API
    module Ver1
        class Events < Grape::API
            resource :tests do

                #POST /api/tests
                desc 'create event'
                params do 
                    requires :Title,        type: String ,  desc:'into title'
                    requires :document,         type: String,   desc:'body'
                end


                post :create do
                    Event.create(
                        title: params[:title],
                        document: params[:body],

                        #返り値
                        present :hash_id ,hash_id
                    end


            end
        end
    end
end

まとめ

今回はPOSTのみですが、GETなどを送りたいのであれば公式で確認ください
https://github.com/ruby-grape/grape

tetsuro_skiing
主に自然言語処理を用いた、機械学習を大学で勉強しています。 ほかに、webアプリケーションなどもやっているのでそれらに関する 記事を主に上げていこうと思っています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away