Swagger可正常调用POST接口但Postman请求返回Unsupported Media File报错
415 Unsupported Media Type 问题原因及解决方法
你的接口核心代码如下:
public IHttpActionResult PostCreaAlimento([FromBody] Alimento alimento) { if (!ModelState.IsValid) return BadRequest("Invalid data."); return _repositorio.CreaAlimento(alimento) ? Ok(alimento) : (IHttpActionResult)NotFound(); }
问题根本原因
你的接口参数标记了[FromBody],ASP.NET Web API 默认对于[FromBody]修饰的复杂类型参数,仅支持解析application/json格式的请求,要求请求头必须携带正确的Content-Type: application/json。
Swagger 请求正常是因为它会自动根据接口定义补全正确的请求头和请求体格式,Postman 出现报错是你手动配置的请求不符合接口要求。
常见场景及修复方案
- 场景1:Postman 请求体格式选择错误
如果你在 Body 标签选择了form-data、x-www-form-urlencoded或者raw下的 Text/JavaScript/XML 等非 JSON 格式,Postman 自动生成的 Content-Type 会不符合接口要求,直接触发415报错。
修复方法:Body 标签选择raw,右侧下拉菜单选中JSON,Postman 会自动在请求头中添加正确的Content-Type: application/json配置。 - 场景2:手动配置了错误的 Content-Type 请求头
如果你手动在 Headers 标签修改过 Content-Type 的值,可能出现值拼写错误、多携带多余字符的问题。
修复方法:检查 Headers 标签的 Content-Type 配置,确认值为纯application/json,无多余的空格、符号。 - 场景3:必须使用表单格式提交请求
如果业务要求必须用表单格式提交数据,你需要修改接口配置或者参数定义:- 移除参数的
[FromBody]修饰,或者 - 在 Web API 配置类中注册表单数据格式化器,支持解析
application/x-www-form-urlencoded类型的请求到复杂类型
- 移除参数的
验证方法
配置完成后重新发送请求,请求体按照Alimento类的字段结构填写合法 JSON 即可正常获取200响应。
内容的提问来源于stack exchange,提问作者Egon
相关产品推荐
相关产品推荐

