VSCodeでSwaggerViewerを導入する
はじめに
最近Swagger
を触る機会がありました。
Yaml
やJson
で定められたフォーマットで記載することで、REST API
の仕様やドキュメントの構築を簡単に行えるので、次にAPI
設計を行う場合は本格的に使いたいなと思います。
そんなSwagger
ですが通常はSwagger Editorを使って編集します。
しかしながらローカルで作業したくなる場合もあるかと思い、VSCode
でできないか調べたところまさに求めていた拡張機能があったので紹介したいと思います。
そもそもSwaggerとは?
以下、翻訳して要点をまとめたものです。
-
Swagger
はREST API
を記述するためのインターフェース言語 -
JSNO
やYAML
で記載する - サードパーティ製ツールを仕様することで高品質のドキュメントやスタブを自動生成できる
REST API
の開発元はSwagger
で記述することで、サードパティ製の様々なサポートツールを利用することができます。
VSCode用の拡張機能「Swagger Viewer」
今回使用するのはSwagger Viewer
という拡張機能です。
これを使うことで、VSCode
でSwagger
を編集しながらプレビューを動的に生成することができます。
インストール
GUI
もしくは下記コマンドでインストールできます。
code --install-extension arjun.swagger-viewer
サンプルコード
以下のようなsample.yaml
を作成しましょう。
サンプルとして、Zenn
のREST API
を想定しています。
# swaggerバージョン宣言
swagger: "2.0"
# 基本情報
info:
# バージョン表記
version: 1.0.0
# タイトル
title: Swagger-Test-API
# 説明
description: |
- Zenn投稿用にSwaggerサンプルを作りました。
- 各種エンドポイントは適当です
# リクエスト方式
schemes:
- http
- https
# ホスト
host: localhost:8080
# 基底パス
basePath: /swagger-sample/zenn/api/
# タグ定義
tags:
- name: "Article"
description: 記事に関するエンドポイント
externalDocs:
description: "AAAAAAAAAA"
url: "http://hogehoge"
- name: "Book"
description: 書籍に関するエンドポイント
externalDocs:
description: "BBBBBBBBBB"
url: "http://fugafuga"
# エンドポイント
paths:
/articles:
get:
summary:
記事一覧を取得
tags:
- Article
responses:
200:
description: Hello World
schema:
type: array
example: [
{
id: ef304778ada8a6,
title: ReactNative@v0.63で追加されたPressableが地味にすごい,
link: https://zenn.dev/nekoniki/articles/ef304778ada8a6
}
]
/articles/{id}:
get:
summary:
指定した記事の詳細を取得
tags:
- Article
responses:
200:
description: OK
schema:
type: object
properties:
id:
type: string
example: ef304778ada8a6
author:
type: string
example: ネコニキ
title:
type: string
example: ReactNative@v0.63で追加されたPressableが地味にすごい
link:
type: string
example: https://zenn.dev/nekoniki/articles/ef304778ada8a6
parameters:
- name: id
in: header
type: string
required: true
/books/{id}:
delete:
summary:
指定した書籍の削除
tags:
- Book
produces:
- application/x-www-form-urlencoded
consumes:
- application/text/plain
responses:
200:
description: 削除完了時のレスポンス
parameters:
- name: id
in: header
type: string
required: true
Swagger
のフォーマットに慣れない方のために簡単に内容を説明すると、以下のような定義を行っています。
-
/swagger-sample/zenn/api/
を基底とするSwagger-Test-API
というAPI
を定義 - タグ(
API
の区分と置き換えても構いません)としてArticle
とBook
を定義 -
Article
に属するエンドポイントとして/articles
と/articles/{id}
を定義 -
Book
に属するエンドポイントとして/books/{id}
を定義
プレビュー
続いてSwagger Viewer
を使ってプレビューしてみましょう。
sample.yaml
を開いた状態で以下を行うことでプレビューができます。
-
Shift+command+p
でコマンドパレットを開く(Windows
はShift+Alt+p
) - コマンドパレットから
Preview Swagger
を選択
先ほど定義した内容が整形されて参照できるようになりました。
試しに/articles
のエンドポイントを開いてみると、定義した内容の詳細が確認できることがわかります。
まとめ
今回はSwagger Viewer
を使ってVSCode
でSwagger
のプレビューを参照する方法についてご紹介しました。
この段階ではあくまで「プレビュー」で、実際には今回作成したsample.yaml
を使ってドキュメントやスタブを作っていくことになります。
その場合にはまた別のSwagger
をサポートしたツールを使っていくことになります。
こちらはまた別記事で紹介したいと思います。
Discussion