设计一个 API OpenAPI 3.0 - header 参数内容类型被忽略

Designing an API OpenAPI 3.0 - header parameter Content type are ignored

这个问题实际上是之前一个问题的后续问题 here

我想做的是强迫我的 api 的消费者 ONLY 发送 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

我可以看到一个警告:

Header Parameters named 'Content-type' are ignored. The values for the 'Content-Type' header are defined by 'RequestBody.content.media-type

尝试谷歌搜索并找到一个 link here 但它只是简单地说明:

Make sure that you do not use the restricted values as header parameter names.

这真的没有解释如何执行此标准?

附带说明 - 如果我在设计中心(Anypoint 平台)复制粘贴相同的 api 规范,它不会抱怨并且事实上 mule 运行时正确验证并拒绝没有 application/json 在 content-type

谢谢

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

示例:

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