2017-08-15 6 views
0

を私は違いSWAGGER/OpenAPIを(その後闊歩-コード生成)を使用して

この間をどうあるべきかを見つけることができませんでした、https://swagger.io/specification/#responsesObject (第1例、JSON形式)

"responses" : { 
    "200": { 
    "description": "a pet to be returned", 
    "content": { 
     "application/json": { 
     "schema": { 
      "$ref": "#/components/schemas/Pet" 
} } } } } 

"reponses" : { 
    "200": { 
    "description": "a pet to be returned", 
    "schema": { 
     "$ref": "#/components/schemas/Pet" 
} } } 

からdireclty採取このサンプルをjson swagger仕様(json)に入れ、コントローラとモデルを生成するためにSwagger-Codegen(Python、flask)を実行しました。 Yamlが好ましい内部表現なので、ジェネレータを実行するとyamlファイルが作成されます。旧付き

、応答タイプは「なし」私は私が期待されるべきだと思うものを、後者利回りのに対し

responses: 
    200: 
    description: "a pet to be returned" 

ではありません:

responses: 
    200: 
    description: "a pet to be returned" 
    schema: 
     $ref: "#/components/schemas/Pet" 

例えば、スキーマから省略されているようです最初の構文を使用してContent

内容は何を意味していますか? この例では何が分かりませんが、Contentが非戻り型であり、対応するスキーマが返されないのはなぜですか? SwaggerCodgen上

注:生成されたコードは、それゆえ私はここに

答えて

2

最初の例は、OpenAPIの3.0でこれらの詳細のいずれかを含めていない、生成されたYAMLが言うことを正確に一致し、第二の例では、したがって、OpenAPIの2.0です違い。

OpenAPI 3.0で使用されているcontentキーワードは、OpenAPI 2.0のconsumes/producesの代わりになります。 responsesのコンテキストでは、contentは応答に本文があり、メディアタイプ(JSON/XML/etc。)と応答本体の構造を指定することを意味します。

OpenAPIの2.0バージョン:

swagger: "2.0" 
... 
paths: 
    /foo: 
    get: 
     produces: 
     - application/json 
     responses: 
     200: 
      description: OK 
      schema: 
      $ref: "#/definitions/Pet" 

OpenAPIの3.0バージョン:

openapi: 3.0.0 
... 
paths: 
    /foo: 
    get: 
     responses: 
     "200": 
      description: OK 
      content: 
      application/json: 
       schema: 
       $ref: "#/components/schemas/Pet" 

コード生成の問題がありそうfololowingのいずれかによって引き起こされる:

  • コード生成がOpenAPIの3.0をサポートしていないにさらに
  • スペックが無効です(例:mi 2.0と3.0のxのx)
+0

ありがとう、私は完全にそれを逃した。私はあなたの答えをupvotedし、私はcodegenで確認することができます一度それをマークします。 3.0での '生成'の除去は私にとってははるかに直感的なので、2.0ではなく3.0でこれをやろうとしています。私はswagger2openapiを使って私の派手な仕様を3.0に変換しましたが、3.0でcodegenを取得/実行することに問題があります。これはgitでサポートされているようですが、実行するためにあらかじめ構築されたjarファイルやdockerのコンテナは見つかりません。 – mike

+0

https://oss.sonatypeを参照してください。org/content/repositories/snapshots/io/swagger/swagger-codegen-cli/3.0.0-SNAPSHOT /しかし、それは失敗し、2.0(??) 'を実行しているようです。' [main] INFO io.swagger.parser.Swagger20Parser --input/myspec.openapi3.jsonからの読み込み [main] INFO io.swagger.codegen.ignore.CodegenIgnoreProcessor - .swagger-codegen-ignoreファイルが見つかりません。 スレッド「メイン」java.lang.RuntimeExceptionの例外:!私はあなたが[威張っ-codegenをレポ]で問題を開く示唆欠けて闊歩入力またはコンフィグ ' – mike

+0

(https://github.com/swagger-api/swagger-コードジェン/問題)。 – Helen

関連する問題