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

  • Post author:
  • Post category:其他


今天使用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。



版权声明:本文为qq_39009944原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。