0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Swagger (OpenAPI) を始める

Posted at

こんにちは。

初めてSPAをイチから作っています。前の案件もSPAでしたが、入社した時点でAPIのほとんどは実装されていました。

しかし、今回は新しい案件です。バックエンドの実装を別の人がやってるので、今はスプレッドシートでAPIをざっと決めてやり取りしていますが、Swaggerも触ってみたい。

ということで、Swaggerを触り始めた初心者の初心者による初心者のための記事です。

Swagger (OpenAPI) ?

平たくいえば、APIの仕様をドキュメントにするための仕様です。細かい説明は誰かの記事に譲ります。

Swaggerの概要をまとめてみた。 - Qiita

仕様書を書き始めよう

API仕様書はYAMLかJSONで書きます。

最小構成は以下の通り。

swagger: "2.0"
info:
  title: "Hello World"
  version: "1.0.0"
paths:
  /:
    get:
      responses:
        200:
          description: "success"

Swagger Editorの例だとpathsが多すぎてよくわかりませんが、とりあえず「どこにアクセスすると、どんなステータスが返ってくるのか」を書きます。はじめの一歩です。今後も、pathsにpathを追加する場合はresponsesから書き始めるといいでしょう。

プレビューで見てみると、次のようになります。

スクリーンショット 2019-06-20 6.27.23.png

プレビューからリクエストを送信しよう

生成されたドキュメントで「Try it out」ボタンをクリックすると、パラメーターの入力フォームや「Execute」ボタンが表示されて、定義したAPIにリクエストを送信できます。

デフォルトの送信先は、相対パスの / です。つまり、Swagger Editorで開いている場合は https://editor.swagger.io/ で、このままではEditorから叩いても自分たちのサーバーには送信できません。送信先を設定しましょう。

送信先の設定は host と basePath です。自分たちの環境に合わせて設定してください。

実際に設定すると以下のようになります。

swagger: "2.0"
info:
  title: "Hello World"
  version: "1.0.0"
host: "hoge.example.dev"
basePath: "/api/v1"
paths:
  /:
    get:
      responses:
        200:
          description: "success"

仕様書を拡張しよう

この記事はここまでです。

次は、pathのsummaryやparameters、responses.schemaを追記していくことになります。つまり、pathの概要と、入力、出力の詳細な定義です。

他にもinfo.description(詳細な説明)やtags、definitionsなどの仕様が山ほどありますが、それらはオプションです。とにかく初めはそれぞれのパスと入出力を書いていって、重複をtagsやdefinitionsに移していくことになるでしょう。

それでは。


公式サイト: https://swagger.io/

この記事は私の個人ブログからの転載です。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?