1. 程式人生 > >HTTP Status 415 – Unsupported Media Type(使用@RequestBody後postman調接口報錯)

HTTP Status 415 – Unsupported Media Type(使用@RequestBody後postman調接口報錯)

提交 cati adapter pen mapping rep bubuko status 定義

1.問題描述:使用springMVC框架後,添加數據接口中,入參對象沒使用@RequestBody註解,造成postman發起post請求,

      from-data可以調通接口,但是raw調不通接口,然後我用了SpringMVC @ResponseBody 註解,調接口顯示415錯誤處理。

處理:

springmvc添加配置、註解:

技術分享圖片
 1  <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
 2         <property name="messageConverters">
 3
<list> 4 <ref bean="jsonHttpMessageConverter" /> 5 </list> 6 </property> 7 </bean> 8 9 <bean id="jsonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 10
<property name="supportedMediaTypes"> 11 <list> 12 <value>application/json;charset=UTF-8</value> 13 </list> 14 </property> 15 </bean>
View Code

pom.xml添加jackson包引用:

技術分享圖片
 1 <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
2 <dependency> 3 <groupId>com.fasterxml.jackson.core</groupId> 4 <artifactId>jackson-core</artifactId> 5 <version>2.9.6</version> 6 </dependency> 7 <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --> 8 <dependency> 9 <groupId>com.fasterxml.jackson.core</groupId> 10 <artifactId>jackson-databind</artifactId> 11 <version>2.9.6</version> 12 </dependency> 13 <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations --> 14 <dependency> 15 <groupId>com.fasterxml.jackson.core</groupId> 16 <artifactId>jackson-annotations</artifactId> 17 <version>2.9.6</version> 18 </dependency>
View Code

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的,所以調不通接口。

參考:

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

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

HTTP Status 415 – Unsupported Media Type(使用@RequestBody後postman調接口報錯)