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字符串的区别.

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值