SpringBoot post請求 報錯415

錯誤描述

在使用post請求添加信息時,一直報錯415,如下:
報錯

HTTP 415錯誤

不支持的媒體類型

原因有很多種,具體我也不是很清楚啊哈哈哈哈

解決

問題在於,當我們使用application / x-www-form-urlencoded時,Spring不會將其理解爲RequestBody。因此,如果要使用它,則必須刪除@RequestBody註解。

錯誤解決之前的代碼:

	@PostMapping("/article")
	@ResponseBody
	public String insertArticle(@RequestBody Article article) {
            articleService.insertArticle(article);
            return "success" ;
	}

錯誤解決之後的代碼(去掉@RequestBody註解):

	@PostMapping("/article")
	@ResponseBody
	public String insertArticle(Article article) {
            articleService.insertArticle(article);
            return "success" ;
	}

ok解決
解決方法參考自 zpzkitt.
下面,我們再來學習一下@RequestBody 註解吧。

@RequestBody

@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestBody {
    boolean required() default true;
}

看源碼可知,RequestBody 用在方法參數上面。
該註解用來將請求參數綁定到request body中,通過HttpMessageConverter封裝爲具體的JavaBean。
簡單的說就是在一個參數上加上該註解,spring就會將request body中的json/xml對象解析成該參數類型的Javabean對象。
RESTful風格開發中經常用到該註解。
@RequestBody註解的原理
我在網上看到的,這個博主寫的很不錯。

我查看網上的@RequestBody註解時,發現很多關於 用@RequestBody來接收參數時, SpringMvc 報錯:傳遞的參數與實際接口接受的參數不符合的問題
還發現大家的解決方案大部分都是去掉@RequestBody註解。

需要注意的是:
@requestBody註解常用來處理content-type不是默認的application/x-www-form-urlcoded編碼的內容(application/json或application/xml等)。一般情況下來說常用其來處理application/json類型。
@RequestBody接收的是一個json格式的字符串

Json對象和Json字符串

JSON對象

var person={"name":"zhangsan","sex":"男","age":"24"}//json對象
alert(person.name);//zhangsan
alert(typeof person);//object

person就是json對象。可以用perosn.name這種方式進行屬性的調用。第三行代碼就是看person的類型,爲object類型。

JSON字符串

字符串,我們常說的JavaScript中的字符串是單引號或者雙引號引起來的。

var person='{"name":"zhangsan","sex":"男","age":"24"}';//json字符串
alert(person);//{"name":"zhangsan","sex":"男","age":"24"}
alert(typeof person);//string

person就是一個json字符串,之所以叫json字符串,因爲字符串的格式符合json的格式,第三行代碼也匹配其中的類型爲string。

JSON字符串和JOSN對象的轉換

json字符串轉json對象,調用parse方法:

JSON.parse(person);

json對象轉爲json字符串,調用stringify方法:

JSON.stringify(person);

學習自Json對象和Json字符串的區別.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章