#はじめに
7月よりwebエンジニアとなり、研修の一環として社内Qiitaの作成を行いました。
自社にて開発しているシステムでもWebAPIを使用するので、予行演習としてこの社内QiitaでもWebAPIを作成したので作成の流れを3分割して説明したいと思います。
- ①User.allを返す。(前回)
- ②Grape swaggerを使ってAPIの結果を表示する。(今回)
- ③ログイン・ログアウトできるようにする。
前回の投稿では、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に記載できます。他にもオプションがあるので気になる方はこちら(参考)を参照してください。
#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を設定してください。
Rails.application.routes.draw do
mount Root => '/'
mount GrapeSwaggerRails::Engine => '/docs'
end
#swagger.rb
次にswagger自体の諸設定です。
config/initializers/
に以下の 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にアクセスすれば完了です。
次はWebAPIでログイン・ログアウトできるようにしていきたいと思います!
#参考
gem ruby-grape/grape-swagger
gem ruby-grape/grape-swagger-rails