OAS3请求体内层对象能否设置content-type并在Swagger UI生成的curl中展示
OAS3 multipart请求字段单独设置Content-Type说明
结论
OpenAPI 3(OAS3)完全支持为multipart/form-data类型请求体的单个字段(包含你示例中的内层对象字段reporter)设置独立的content-type,你给出的配置写法完全符合规范要求。
规范支持说明
OAS3规范专门提供了encoding配置段,用于对multipart/form-data请求下的各字段自定义序列化规则,其中的contentType参数就是用来指定单个字段的媒体类型,你示例中为reporter字段配置contentType: application/json属于标准合法用法。
工具适配情况
该配置能否正确体现在生成的curl命令中,取决于使用的工具是否适配了OAS3的encoding特性:
- 3.x及以上版本的Swagger UI已经完整支持该特性,生成的curl命令会正确使用
--form参数传递reporter字段,并自动附加application/json的类型标识,对应curl片段格式如下:
--form 'reporter={"name":"string","actingAs":"string","contact":{...}};type=application/json'
- 你当前使用的WSO2 AM 2.2.0是较早发布的版本,内置的OpenAPI解析逻辑没有适配OAS3的
encoding特性,才会生成错误的curl命令,把所有参数都放在-d中传递,这是工具本身的版本缺陷,和OAS3规范无关。
内容的提问来源于stack exchange,提问作者Saranki Magenthirarajah
相关产品推荐
相关产品推荐

