Open API で開発する時の環境を整える


注意

自分用メモです。
業務で使うことになったので。
自分用のめもなので、当てにしないで下さい。
一時リソースは公式を見ましょう。

ちょっ早でやりたい人

git clone [email protected]:Asya-kawai/swagger-env.git
cd swagger-env

エディタを起動する。

docker-compose -f docker-compose-swagger-editor.yaml up

8001で起動するので後はAPIを作って下さい。
APIはyamlとかjsonでファイルに出力できるので。

リポジトリで公開。

bash install-docs.sh <APIを公開したいリポジトリ名> <↑で作ったAPIファイル>

以降は、ゆっくりしたい人のもの。

用意するもの

  • Docker
  • Docker compose

Docker や Docker compose のインストールはここ見てインストールしてな。
https://github.com/docker/compose/releases

見ても分からなければ、思考停止でこれうって。

curl -L https://github.com/docker/compose/releases/download/1.25.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
  • swagger-editor (swaggerエディタ。open api を開発するためのエディタ)
  • swagger-ui (open api な yamlとかjsonを表示するためのWebアプリケーション)

今回の仕様

  • エディタをローカルホストの8001ポートで起動し
  • ローカルホストの8000ポートでUIを表示し確認する

swagger-editor のインストール

ここみて、ほしいバージョンをインストール
https://hub.docker.com/r/swaggerapi/swagger-editor/

見ても分からなければ、思考停止で以下のコマンドうって、エディタ起動してみて。

docker pull swaggerapi/swagger-editor
docker run -d --rm -p 8001:8080 swaggerapi/swagger-editor

swagger-ui のインストール

ここみて、ほしいバージョンをインストール。
https://hub.docker.com/r/swaggerapi/swagger-ui/

見ても分からなければ、思考停止で以下のコマンドうって。

docker pull swaggerapi/swagger-ui

使い方

  • swgger-editor で編集
  • 上部のFileタブから「Save as YAML」を選択
  • Downloads以下にXXXX.yamlが保存されるたことを確認

今回は、openapi.yaml で出力した。

ls openapi.yaml
openapi.yaml
  • そのあと上記のXXXX.yamlファイルを swagger-ui にマウントさせて表示
docker run --rm \
  -v $(pwd)/openapi.yaml:/usr/share/nginx/html/openapi.yaml \
  -e API_URL=openapi.yaml \
  -p 8000:8080 swaggerapi/swagger-ui

おまけ

githubで swagger-ui を公開する方法は以下の通り。

まずは、自分のリポジトリにdocsディレクトリを作成。

cd <Your-repository>
mkdir docs

その後。swagger-ui の dist ディレクトリ内を全てコピー。

git clone https://github.com/swagger-api/swagger-ui.git
cd swgger-ui
cp -r dist/* <Your-repository>/docs/

以下の行を書き換え

    window.onload = function() {
      // Begin Swagger UI call region
      const ui = SwaggerUIBundle({
-     url: "https://petstore.swagger.io/v2/swagger.json",
+     url: "./openapi.yaml" 

参考