使用Swagger / OpenAPI(以及随后的swagger-codegen)我无法找到应该之间的区别
这是https://swagger.io/specification/#responsesObject的直截了当 (第一个例子,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"
} } }
我把这个例子放到一个简单的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
不会导致非None返回类型和相应的模式。
关于SwaggerCodgen的注意事项:生成的代码完全匹配生成的yaml所说的内容,因此我没有在这里包含任何这些细节
答案 0 :(得分:5)
第一个例子是OpenAPI 3.0,第二个例子是OpenAPI 2.0,因此不同。
OpenAPI 3.0中使用的content
关键字取代了OpenAPI 2.0中的consumes
/ produces
。在responses
的上下文中,content
表示响应具有主体并指定媒体类型(JSON / XML /等)和响应主体的结构。
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"
codegen问题很可能是由以下任何一个问题引起的: