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

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

はじめに

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

Why do not you register as a user and use Qiita more conveniently?
  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
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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