コマンドラインからSwagger YAML
ファイルをJSON
に変換したいと思います。計画では、CIジョブ中にこのコマンドラインを使用します。私はグーグルで検索し、多くの解決策を見つけましたが、それらのほとんどはPythonまたはRubyを使用しています。これは使用したくないです。たとえば: http:// www .commandlinefu.com/commands/view/12218/convert-yaml-to-json
PythonまたはRubyを使用せずにこれを行いたい。また、Swaggerの出力であるJSONと正確に一致するようにJSONをフォーマットするときに先頭の空白を制御できるようにしたい editor.swagger.io エディター、File
-> Download JSON
を選択した場合
つまり、次のように空白スペースを4つのスペースにしたいということです。
{
"swagger": "2.0",
"info": {
"title": "API TITLE",
上記のリンクでPythonメソッドを試していませんが、Rubyメソッドは2つの空白スペースのパディングを使用します。おそらくそれを制御する方法があります。しかし、とにかくこのソリューションではRubyまたはPythonを使用したくありません。
この質問には多くの「正しい」答えがあると確信しています。依存関係の数が最も少なく、最もエレガントなソリューションを探しています。理想的には、 editor.swagger.io によって生成されたJSONファイルに対する結果のJSONファイルのdiffは空でなければなりません。
swagger-codegen 機能を探していると思います:
ランニング
swagger-codegen generate -i swagger.yaml -l swagger
同じ場所にswagger.jsonを配置します。
CIのアップデート:ビルドマシンにインストールできる場合-良い。できない場合-githubページには、nodejsサーバーを使用したdockerイメージへのリンクがあります(別の回答で提案されているcurlコマンドを使用して変換するため)。
yamljs を使用:
yaml2json swagger.yaml -p -i4
editor.swagger.io からのJSON出力に対してdiff'dされたこのコマンドの出力は、空のdiffを生成します。
これは確かに私が探しているものですが、大きな依存関係(ノード)をもたらします。もっと軽く、しかもこれと同じくらいエレガントなものを望んでいます。
リエルがすでに指摘している のように、実行できます
swagger-codegen generate -i swagger.yaml -l swagger
Dockerを使用する場合は、 swaggerapi/swagger-codegen-cli をお試しください。
Dockerを使用してjsonファイルを生成するには、次のコマンドを使用します。
docker run -v ./docs:/docs swaggerapi/swagger-codegen-cli generate -i /docs/swagger.yaml -l swagger -o /docs
docker-compose.yml
再利用を容易にするために、このコマンドを「エイリアス」にします。
version: "2"
services:
gen-swagger:
volumes:
- ./docs:/docs
image: swaggerapi/swagger-codegen-cli
command: generate -i /docs/swagger.yaml -l swagger -o /docs
これで、docker-compose run gen-swagger
バージョンの場合swagger-codegen 3.0.4
つかいます
swagger-codegen generate -i my_yaml.yaml -l openapi
.json
。
これを行うには、オンラインswagger codegenプロジェクトを使用できます。
curl -X POST --header "Content-Type: application/json" --header "Accept: application/json" -d "{
\"spec\": {}
}" "https://generator.swagger.io/api/gen/clients/swagger-yaml"
Swagger定義の値をspec
オブジェクトに入れます。変換され検証された仕様をyaml形式でダウンロードするためのリンクが表示されます。
オプションについては、こちらをご覧ください。
Swagger.ymlファイルをswagger.jsonに変換する別の可能性は、 swagger-cli と呼ばれるNPMパッケージです。
npm install -g swagger-cli
次に、ymlをjsonファイルに変換できます。
swagger-cli bundle -o api-spec.json api-spec.yml