- 问题描述:使用springMVC框架后,添加数据接口中,入参对象没使用@RequestBody注解,造成postman发起post请求,from-data可以调通接口,但是raw调不通接口,然后我用了SpringMVC @ResponseBody 注解,调接口显示415错误。
- 处理:
- springmvc添加配置、注解:
-
- pom.xml添加jackson包引用:
1 23 7 8com.fasterxml.jackson.core 4jackson-core 52.9.6 69 13 14com.fasterxml.jackson.core 10jackson-databind 112.9.6 1215 com.fasterxml.jackson.core 16jackson-annotations 172.9.6 18
-
- Ajax请求时没有设置Content-Type为application/json
- 注:按照上面配置完成后可以使用raw调用接口中包含@RequestBody注解的接口,但是此时你会发现form-data这种方式访问接口又调不通了,百度了下,解决如下:
- form-data 的 Content-Type 的类型是 application/x-www-form-urlencoded,是表单编码,不同的是还可以提交文件。
- raw 的话,有几种,常用的是application/json
- 如果SpringMVC要接受application/json,需要使用 @RequestBody 注解来接收。
- 也就是说 @RequestBody 注解接收的是application/json格式的参数,这种参数使用raw传参可以自定义格式为(JSON(application/json)),但是form-data传参的格式是application/x-www-form-urlencoded的,所以调不通接口。
- 参考:
- 注:
1 1.使用上述处理配置完成后,不使用@RequestBody注解的话,通过postman的form-data调接口,接口能调通,但是值传不进来。 2 2.使用上述处理配置完成后,使用@RequestBody注解的话,通过postman的form-data调接口,接口不能调通,报415错误。 3 4 5 6 3.使用上述处理配置完成后,不使用@RequestBody注解的话,通过postman的raw (application/json)调接口,接口能调通,但是值传不进来。 7 8 4.使用上述处理配置完成后,使用@RequestBody注解的话,通过postman的raw (application/json)调接口,接口能调通,值能传入,完成添加操作。 9 10 11 12 5.不使用上述处理配置完成后,不使用@RequestBody注解的话,通过postman的raw (application/json)调接口,接口能调通,但是值传不进来。13 14 6.不使用上述处理配置完成后,使用@RequestBody注解的话,通过postman的raw (application/json)调接口,接口不能调通,报415错误。15 16 17 18 7.不使用上述处理配置完成后,不使用@RequestBody注解的话,通过postman的form-data调接口,接口能调通,但是值传不进来。19 20 8.不使用上述处理配置完成后,使用@RequestBody注解的话,通过postman的form-data调接口,接口不能调通,报415错误。
- 参考:
springMVC 如果不进行必要配置的话,只支持x-www-form-urlencoded,如果使用form-data会报400 Bad Request错误。
在spring的mvc配置文件中配置对multi的支持即可,如下:此时对以上两种编码格式都支持。注意:此时需要引入 commons-fileupload commons-fileupload ${commons-fileupload.version}