Swagger how connexion+;招摇过市设置响应内容类型?

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:

下面是API*.yml,我想用
内容类型响应数据: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如何设置响应头类型吗