環境構築
ついでに、初めてQiitaで記事を書いてみました。
前提
MacBook Pro
macOS Catalina 10.15.7
導入
下記をインストールしました。
- Docker
- Visual Studio Code
- Visual Studio Code 拡張機能
- Japanese Language Pack
- Docker 1.6.0
- Remote - Containers 0.145.0
- Python
- PyLint
- Rainbow CSV 1.7.1
- YAML 0.11.1
- Swagger Viewer 3.0.1
- OpenAPI (Swagger) Editor 3.7.0
参考:
設定
- VS Code 同期設定の有効化
- 作業フォルダ作成 (dropbox内に作成しました)
- VS Code で作業フォルダを開く
作業
- Github でレポジトリ作成
- 手元で、microsoft/vscode-remote-try-pythonをコピー(git clone)
- フォルダ名と、git remote set-urlでremote 宛先を自分のレポジトリに変更
エラー対応
ライブラリのインストールや、Jupiterの利用で、エラーが出たため、
ひとまず、ユーザーをrootのままとするようなコメントアウトを行いました。
ライブラリインストール
PyYAMLライブラリ,CSVライブラリを使います。
requirements.txtに書いて、Rebuild And Rerunするだけなのでとても簡単で素晴らしいです。
requirements.txt
flask
pyyaml
csv
ipykernel
コーディング
yamlを開いて、
順繰りにCSVに書き込みたい内容を収集し、
CSV保存して
完了です。
yamlが辞書型というもので読み込まれるので、
欲しい条件に合致するようにループと変数取得を記述する所がポイントでした。
open-api-yaml-to-csv.py
import yaml
import csv
# yamlファイルのコンテンツを、辞書型の変数に格納
with open("oidc-swagger.yaml", "r") as yf:
data = yaml.safe_load(yf)
# 辞書内から、必要な情報を抽出し、配列として格納
api_list_array = []
i = 0
api_list_array.append(["#", "operationId", "METHOD", "PATH"])
for path in data['paths'].keys():
if path != "/swagger":
for verb in data['paths'][path].keys():
# if 'operationId' in data['paths'][path][verb]:
name = data['paths'][path][verb]['operationId']
i = i+1
# print(i,name, verb, path)
api_list_array.append([i, name, verb, path])
# 配列をCSVとして保存
with open('list.csv', 'w') as csvfile:
writer = csv.writer(csvfile)
writer.writerows(api_list_array)
以上、初投稿でした。環境構築部分は苦労したので、もう少し書き足そうと思います。