Swagger how connexion+;招摇过市设置响应内容类型?
下面是API*.yml,我想用Swagger how connexion+;招摇过市设置响应内容类型?,swagger,openapi,connexion,Swagger,Openapi,Connexion,下面是API*.yml,我想用内容类型响应数据:text/plain,但它现在总是返回application/json /order: post: tags: - order summary: order operationId: PostOrder parameters: requestBody: description: Order result content:
内容类型响应数据:text/plain
,但它现在总是返回application/json
/order:
post:
tags:
- order
summary: order
operationId: PostOrder
parameters:
requestBody:
description: Order result
content:
application/json:
schema:
type: object
properties:
openReq:
type: string
example: 'test'
responses:
200:
description: Customer order receive successed
headers: {}
content:
application/json:
schema:
type: string
text/plain:
schema:
type: string
与swagger generator生成的响应代码相同:
def post_order(platform, open_req=None): # noqa: E501
"""order
"""
return 'do some magic!'
响应头总是内容类型:application/json
responses:
200:
description: Customer order receive successed
headers: {}
content:
application/json:
schema:
type: string
text/plain:
schema:
type: string
此响应标题始终为内容类型:text/plain;字符集=utf-8
responses:
200:
description: Customer order receive successed
headers: {}
content:
# application/json:
# schema:
# type: string
text/plain:
schema:
type: string
我可以在函数
post\u order
中设置响应标题内容类型吗?可能您将API Swagger文档与实际实现混淆了,您的文档是正确的,这意味着响应200 OK
,可以返回为应用程序/json
或文本/普通
。返回哪一个完全取决于端点的实现。如果您的端点只返回application/json
,那么您将永远不会收到text/plain
,这不是Swagger/OpenApi的工作。如果您希望您的函数动态决定返回哪种内容类型,则必须按照中的说明明确设置标题
这两种方法之一是返回内容的元组、返回代码和标题字典,如下所示:
def post_订单(平台,开放式需求=无):
“命令
"""
return'do some magic!',200,{'content-type':'text/plain'}
第二种方法是显式创建响应对象并返回:
来自connexion.lifecycle导入ConnexionResponse
def post_订单(平台,开放式需求=无):
“命令
"""
返回连接响应(
状态代码=200,
内容\u type='text/plain',
身体:施点魔法吧
)
这使您能够更好地控制其他调整。但是,如果简单元组解决方案适用于您的情况,则没有必要这样做。您的定义是有效的。你能更详细地解释问题是什么以及什么时候发生的吗?即使客户端请求
text/plain
,API服务器是否始终返回JSON?还是别的?很抱歉回复太晚,您知道connexion如何设置响应头类型吗