swagger 设计API OpenAPI 3.0 -忽略标头参数内容类型

nkoocmlb  于 2022-12-13  发布在  其他
关注(0)|答案(2)|浏览(516)

此问题实际上是先前问题here的后续问题
我尝试做的是强制我的API的使用者发送 Content-Type 作为application/json
我的环境是:Mule 4.4运行时(内部部署,不使用Anypoint平台)
我在OAS 3.0中定义规范,并使用swagger编辑器创建和编辑规范
我有以下定义:

/user:
post:
  parameters:
    - in: header
      name: Content-Type
      required: true
      schema:
        type: string
        enum:
          - application/json

我能看到一个警告
已忽略名为“Content-type”的标头参数。“Content-Type”标头的值由“RequestBody.content.media-type”定义
尝试谷歌搜索,发现一个链接here,但它只是说:
请确保未使用受限制的值作为标头参数名称。
这并没有解释如何执行这一标准?
作为一个侧记-如果我复制粘贴相同的API规范在设计中心(Anypoint平台),它不会抱怨,事实上mule运行时正确地验证和拒绝请求,没有应用程序/json的内容类型
谢谢

ykejflvf

ykejflvf1#

在OpenAPI中(甚至RAML)我们不把Content-Type头当作一个通用的HTTP头。这适用于requestsresponses。作为规范的一部分,你可以为每个请求定义媒体类型。实现将负责正确处理它,并验证在执行时使用了正确的Content-Type头。由于您尝试手动设置它,因此实现会给您一个预期的警告。
示例:

paths:
  /services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX:
    post:
      requestBody:
        content:        
          application/json:
idfiyjo8

idfiyjo82#

当我将requestBody内容类型设置为“application/x-www-form-urlencoded”时,我也遇到了同样的问题
Request Header Content type from YAML file
但是它作为“多部分/形式数据”传输;边界=----网络工具包表格边界
Transporting Content-Type in Post request

相关问题