LoginSignup
3
0

More than 3 years have passed since last update.

Rails + Grapeを使ってWebAPIを作成する。(②Grape_swaggerを使って結果を出力できるようにする。)

Last updated at Posted at 2019-09-21

はじめに

7月よりwebエンジニアとなり、研修の一環として社内Qiitaの作成を行いました。
自社にて開発しているシステムでもWebAPIを使用するので、予行演習としてこの社内QiitaでもWebAPIを作成したので作成の流れを3分割して説明したいと思います。

前回の投稿では、User.allを返すWebAPIについてまとめました。
ここでRailsでWebAPIを作成するにあたってJSON形式で送られてくる結果をどうやって確認するのかというと

  • grape_swagger(gem)
  • Postman

この2つのどちらかが多いと思います。
今回はGrape_swaggerを使用して送られてくるJSON形式のデータを出力させるまでをまとめたいと思います。

Gemfile

まずはgemをインストール。

gem 'grape-swagger', group: :development
gem 'grape-swagger-rails', group: :development

root.rb

インストール後、rootノード(一番上の階層にあるWebAPIの全般的な設定を行うファイルと言ったらいいかな?)にgrape-swaggerを読み込むよう諸設定を行います。
add_swagger_documentationではAPIの名称や説明文をswaggerに記載できます。他にもオプションがあるので気になる方はこちら(参考)を参照してください。

api/root.rb
#gem grape-swaggerの読み込み(本番環境以外)
require 'grape-swagger' unless Rails.env.production?

class Root < Grape::API
  prefix 'api'
  format :json

  mount V1::Root
 #本番環境以外では以下記述を反映させる。
  if defined? GrapeSwaggerRails 
    add_swagger_documentation(
      info: {
        title: 'SAMPLE_API',  #このAPIの名称
        description: 'API'        #説明文
      }
    )
  end
end

routes.rb

swaggerにアクセスする際のURLを設定します。
この時のURLは私は'docs'と記載しましたが、お好みのURLを設定してください。

routes.rb
Rails.application.routes.draw do
  mount Root => '/'
  mount GrapeSwaggerRails::Engine => '/docs'
end

swagger.rb

次にswagger自体の諸設定です。
config/initializers/に以下の swagger.rbを置いてください。

swagger.rb
unless Rails.env.production?
  # 完成形のヘッダにあるタイトルを示します。
  GrapeSwaggerRails.options.app_name = 'API_TUTORIAL_APP' 
  # このURLは固定です。
  GrapeSwaggerRails.options.url = '/api/swagger_doc.json'

  GrapeSwaggerRails.options.before_action do
    # 完成形のヘッダにあるタイトルをクリックすることによって開発中のWebアプリに遷移してくれます。
    # localhost:3000/docs (クリックすると)=> localhost:3000 に遷移。
    GrapeSwaggerRails.options.app_url = request.protocol + request.host_with_port
  end
end

完成形

あとはlocalhost:xxxx/docsにアクセスすれば完了です。

スクリーンショット 2019-09-21 12.44.51.png

次はWebAPIでログイン・ログアウトできるようにしていきたいと思います!

参考

gem ruby-grape/grape-swagger
gem ruby-grape/grape-swagger-rails

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0