HTTP Status 415 – Unsupported Media Type(使用@RequestBody后postman调接口报错)

1.问题描述:使用springMVC框架后,添加数据接口中,入参对象没使用@RequestBody注解,造成postman发起post请求,

      from-data可以调通接口,但是raw调不通接口,然后我用了SpringMVC @ResponseBody 注解,调接口显示415错误

处理:

springmvc添加配置、注解:

 1  class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
 2         
 3             
 4                 
 5             
 6         
 7    
 8  
 9    class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
10         
11             
12                 application/json;charset=UTF-8
13             
14         
15    
View Code

pom.xml添加jackson包引用:

 1 
 2             
 3                 com.fasterxml.jackson.core
 4                 jackson-core
 5                 2.9.6
 6             
 7             
 8             
 9                 com.fasterxml.jackson.core
10                 jackson-databind
11                 2.9.6
12             
13             
14             
15                 com.fasterxml.jackson.core
16                 jackson-annotations
17                 2.9.6
18             
View Code

Ajax请求时没有设置Content-Type为application/json

HTTP Status 415 – Unsupported Media Type(使用@RequestBody后postman调接口报错)_第1张图片

注:按照上面配置完成后可以使用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的,所以调不通接口。

 

参考:

https://blog.csdn.net/leyangjun/article/details/79221765

https://blog.csdn.net/yixiaoping/article/details/45281721#comments

 

注:

 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错误。
View Code

 

 

遗留问题:

form-data调不通了,刚开始什么都没配置也没有引入以上依赖,不用@RequestBody注解的话使用postman的form-data还是可以调的通的(有值),但是现在调不通了。

使用x-www-from-urlencoded调也可以实现传值调接口,但是form-data不行,毛病!!!

 

参考:https://www.dev-heaven.com/posts/34407.html后解决问题

springMVC 如果不进行必要配置的话,只支持x-www-form-urlencoded,如果使用form-data会报400 Bad Request错误。
在spring的mvc配置文件中配置对multi的支持即可,如下:

class="org.springframework.web.multipart.commons.CommonsMultipartResolver">       


此时对以上两种编码格式都支持。

注意 此时需要引入
commons-fileupload commons-fileupload ${commons-fileupload.version}

 

转载于:https://www.cnblogs.com/LJing21/p/10485146.html

你可能感兴趣的:(HTTP Status 415 – Unsupported Media Type(使用@RequestBody后postman调接口报错))