此问题实际上是先前问题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的内容类型
谢谢
2条答案
按热度按时间ykejflvf1#
在OpenAPI中(甚至RAML)我们不把Content-Type头当作一个通用的HTTP头。这适用于requests和responses。作为规范的一部分,你可以为每个请求定义媒体类型。实现将负责正确处理它,并验证在执行时使用了正确的Content-Type头。由于您尝试手动设置它,因此实现会给您一个预期的警告。
示例:
idfiyjo82#
当我将requestBody内容类型设置为“application/x-www-form-urlencoded”时,我也遇到了同样的问题
Request Header Content type from YAML file
但是它作为“多部分/形式数据”传输;边界=----网络工具包表格边界
Transporting Content-Type in Post request