不支持Http媒体类型异常:内容类型text/plain

今天使用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":"哈哈"}

不支持Http媒体类型异常:内容类型text/plain_第1张图片默认是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媒体类型异常:内容类型text/plain_第2张图片
在我的发送http请求中,仅仅只是发了Payment的一个属性serial的话,必须在控制层的参数那里添加@RequestBody。

@RequestBody的作用是接受一个json格式的字符串,一定是一个字符串。

@RequestBody后面是类时,会根据json字符串中的key来匹配对应实体类的属性,如果匹配一致且json中的该key对应的值符合(或可转换为)实体类的对应属性的类型要求时,会调用实体类的setter方法将值赋给该属性。
(即会根据把前台发送过来JSON数据装配到后台的参数对象中。)

就是说如果不添加@RequestBody,会导致payment对象里面的属性没有值。

如果@RequestBody后面不是对象的话,可以不加@RequestBody。

你可能感兴趣的:(java)