今天使用postman发送请求的时候出现以下错误
"status": 415,
"error": "Unsupported Media Type",
"message": "Content type 'text/plain;charset=UTF-8' not supported",
"trace": "org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'text/plain;charset=UTF-8' not supported
我在发送请求的时候是在Requestbody发送JSON串
{"serial":"哈哈"}
默认是Text,如果是发JSON数据过去的话,记得选JSON,不然就会出现我标题所说的不支持text/plain类型异常。
如果在AJAX发送请求中添加JSON格式数据的话,需要设置contentType
$.ajax({
url : ‘xxx’,
type : ‘post’,
contentType:‘application/json;charset=UTF-8’,
//主要设置你发送给服务器的格式
data : { //data :发送给服务器的数据
“serial”:“哈哈”
},
dataType : ‘json’, //dataType:服务器返回的数据类型
success: function(data){
}
});
如果后台接收的是一个对象,例如我后台接受的对象是Payment。
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Payment implements Serializable {
private Long id;
private String serial;
}
在我的发送http请求中,仅仅只是发了Payment的一个属性serial的话,必须在控制层的参数那里添加@RequestBody。
@RequestBody的作用是接受一个json格式的字符串,一定是一个字符串。
@RequestBody后面是类时,会根据json字符串中的key来匹配对应实体类的属性,如果匹配一致且json中的该key对应的值符合(或可转换为)实体类的对应属性的类型要求时,会调用实体类的setter方法将值赋给该属性。
(即会根据把前台发送过来JSON数据装配到后台的参数对象中。)
就是说如果不添加@RequestBody,会导致payment对象里面的属性没有值。
如果@RequestBody后面不是对象的话,可以不加@RequestBody。