jsonからswagger specを生成するコマンドに変更を加えた
昨日作ったコマンドに変更を加えた。変更点は以下
- 複数のファイルを渡せるようにした
- minimapを表示するようにしてみた
- validationのための
--emit=jsonschema
を止めた
複数のファイルを渡せるようにした
複数のファイルを渡せるようにした。requiredなどの扱いが顕著に変わる。
例えば、以下の様な2つのファイルを利用して生成したschemaはnicknameがrequiredではない。
foo.json
{ "name": "foo", "age": 20, "nickname": "F" }
bar.json
{ "name": "bar", "age": 22 }
$ swaggerknife json2swagger foo.json bar.json --name person --dst person-spec.yaml
person-spec.yaml
definitions: person: type: object properties: name: type: string example: bar age: type: integer example: 22 nickname: type: string example: F required: - name - age
minimapを表示するようにしてみた
--with-minimap
をつけるとminimapを表示。暫定的な機能。
{ "server": { "host": "localhost", "port": "3306", "slave": [ {"weight": 1, "ip": "10.0.0.1"}, {"weight": 5, "ip": "10.0.0.2"}, {"weight": 3, "ip": "10.0.0.3"}, {"weight": 2, "ip": "10.0.0.4"} ] }, "db": { "user": "root", "pass": "pass" } }
標準出力に出てしまうので注意。そしてJSONにはコメントが無いので注意(invalidなJSONになる)。
$ swaggerknife json2swagger --with-minimap --name config config.json
何となくどのような形かは分かるはず。
# minimap ### # *config # * server # * slave[] # * db definitions: slaveItem: type: object properties: weight: type: integer example: 1 ip: type: string example: 10.0.0.1 required: - weight - ip slave: type: array items: $ref: '#/definitions/slaveItem' server: type: object properties: host: type: string example: localhost port: type: string example: '3306' slave: $ref: '#/definitions/slave' required: - host - port - slave db: type: object properties: user: type: string example: root pass: type: string example: pass required: - user - pass config: type: object properties: server: $ref: '#/definitions/server' db: $ref: '#/definitions/db' required: - server - db
validationのための --emit=jsonschema
を止めた
これは別途tojsonschemaというサブコマンドを作った(経緯は昨日の記事参照)。
以前の以下の様な呼び出しが
$ swaggerknife json2swagger --emit=jsonschema config.json --dst schema.json
以下の様に変わる。
$ swaggerknife json2swagger config.json | swaggerknife tojsonschema --dst schema.json
あと
あと、用例もそれなりに書いた。
http://dictknife.readthedocs.io/en/latest/commands3.html#json2swagger