记一次使用postman测试中出现Unsupported Media Type(Content type ‘multipart/...)的问题

在项目中需要获取post中的参数,使用springboot创建项目后写了个demo来接收,代码如下

@RestController
@RequestMapping("/test")
public class HttpController {

    @GetMapping
    public String get(){
        return "hello world";
    }

    @PostMapping
    public String post(@Valid @RequestBody Req req){
        return req.toString();
    }

}

 其中,在使用postman测试时,get接口没有问题,而post要获取body中的键值对时出现了下列问题。

{
    "timestamp": "2020-08-25T05:08:48.457+0000",
    "status": 415,
    "error": "Unsupported Media Type",
    "message": "Content type 'multipart/form-data;boundary=--------------------------131422713422864173636970;charset=UTF-8' not supported",
    "path": "/test"
}

在网上查资料方向可能不对,大部分都是如何解决post中的body参数稚嫩获取一次的问题,最后经过查资料排查,问题锁定在postman的使用上, postman的body参数有form-date表单类型、x-www-form-urlencoded键值对类型、raw、binary以及GraphQL。其中的区别可以查看postman中body的格式选择-elephant230

记一次使用postman测试中出现Unsupported Media Type(Content type ‘multipart/...)的问题_第1张图片

这次的问题主要原因是在springmvc中使用了RestController(ResponseBody+Controller)对body中的参数就要求为json,无法解析键值对,所以造成类型不匹配,只需使用raw格式或者对代码中去除ResponseBody注解即刻。

说到底还是自己对于Spring以及postman工具不够熟悉,还得多研究研究,尤其是庞大的Spring家族。

你可能感兴趣的:(Java,Spring)