Swagger UI提交form data时Content-Type为undefined如何解决?
解决Swagger UI提交form data时Content-Type为undefined的问题
你遇到的问题核心是Swagger定义里缺少了consumes字段的正确配置,这才导致Swagger UI无法确定该用什么Content-Type发送form data请求。JSON请求能正常工作是因为后端通常默认支持application/json,但form data需要明确声明支持的媒体类型。
下面是具体的修复步骤:
1. 补充consumes字段
你的POST接口定义里consumes是空数组,这会让Swagger UI找不到请求的Content-Type依据。你需要根据表单类型添加对应的媒体类型:
- 若为普通表单(无文件上传),添加
application/x-www-form-urlencoded - 若为包含文件上传的表单,添加
multipart/form-data
2. 修正参数的required值
你提供的代码里required字段后面是fal...,记得补全为true或false,保证Swagger定义的语法正确性。
修复后的完整API定义示例
{ "swagger": "2.0", "info": { "version": "V1", "title": "Title" }, "paths": { "/api/getcalculation": { "post": { "tags": [ "ArrearsOfPay" ], "operationId": "ApiArrearsOfPayPost", // 添加对应的consumes类型 "consumes": [ "application/x-www-form-urlencoded" ], "produces": [ "application/json" ], "parameters": [ { "name": "InsolvencyDate", "in": "formData", "required": false, // 补全正确的布尔值 "type": "string", // Swagger 2.0要求formData参数必须指定类型 "format": "date" // 如果是日期类型,可添加format约束 } // 其他formData参数可在此继续添加 ], "responses": { "200": { "description": "Success", "schema": { // 你的响应结构定义 } } } } } } }
额外注意事项
- 若需要同时支持多种表单类型,可在
consumes数组中添加多个值,比如["application/x-www-form-urlencoded", "multipart/form-data"] - Swagger 2.0规则中,使用
formData参数的接口不能同时使用body参数,二者只能二选一
修改完成后重新加载Swagger UI,就能正常识别Content-Type并发送form data请求了。
内容的提问来源于stack exchange,提问作者Mir
相关产品推荐
相关产品推荐

