Rails + Grape + Swaggerで簡単APIドキュメント


Grape + SwaggerでAPI実装からドキュメント作成まで簡単にできてしまいます!

画面イメージ

準備

rails new grape-swagger
cd grape-swagger
rails g scaffold user
rake db:migrate RAILS_ENV=development

設定

修正ファイル

Gemfile
gem 'grape', '~> 0.6.1'
gem 'grape-entity', '~> 0.4.0'
gem 'grape-swagger', '~> 0.7.2'
gem 'grape-swagger-rails'

ルーティング

config/routes.rb
mount API::Root => '/'
mount GrapeSwaggerRails::Engine => '/docs'

lib以下を自動で読み込み

config/application.rb
config.autoload_paths += %W(#{config.root}/lib)

新規作成ファイル

config/initializers/grape_swagger_rails.rb
GrapeSwaggerRails.options.url      = "swagger_doc.json"
GrapeSwaggerRails.options.app_name = 'GrapeSwagger'
GrapeSwaggerRails.options.app_url  = '/'
lib/api.rb
require 'grape'

module API
  class Root < Grape::API
    default_format :json

    mount API::Users => '/users'

    add_swagger_documentation(
      base_path: "/",
      hide_documentation_path: true
    )
  end
end
lib/api/users.rb
module API
  class Users < Grape::API

    desc 'get all users'
    get "all" do
      present User.all, with: API::Entities::User
    end

  end
end
lib/api/entities/user.rb
module API
  module Entities
    class User < Grape::Entity
      expose :name
    end
  end
end

サーバー起動

  • bundle install, rails sしてlocalhost:3000/docsへアクセスすると冒頭の画面が表示されます

サンプル