1.没有@RequestBody,直接写实体类作为参数,可以接受postman的data-form表单数据,但可能出现null异常
2.用了@RequestBody修饰的话不能接受postman的data-form表单的数据,但是一定要注意前端做保存操作的时候提交了很多参数过来,前端代码提交的时候content-type改成application/json
它处理的数据类型一般都是非非Content-Type: application/x-www-form-urlencoded格式的,所以不能用get请求,
还有一点前端json数据和后端json数据 首字母不要大写,首字母大写映射不上,以驼峰格式命名。(吃一堑长一智)
3.@RequestBody后面是不能跟String基本类型的,他是用来修饰实体类对象的
4.@RequestBody后面是不能跟多个实体类对象的,也就是只有一个实体类对象
原因:@requestbody的含义是在当前对象获取整个http请求的body里面的所有数据,因此spring就不可能将这个数据强制包装成Course或者List类型,并且从@requestbody设计上来说,只获取一次就可以拿到请求body里面的所有数据,就没必要出现有多个@requestbody出现在controller的函数的形参列表当中
5.@RequestBody接受前端日期类型结构字符串,如何把这个字符串转为实体类的Date()类型的数据:

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date estimatedCompleteTime;//预估完成时间
    前端发送"estimatedCompleteTime":"2019-08-12 23:51:40.249",

参考也可参考 6.@requestBody和@RequestParam()可同时使用接受前端的数据
@RequestParam数放在Postman的data-form数据,@requestbody的实体类数据放在raw里面
参考 7.json与序列化,反序列化的概念:
JSON是JavaScript Object Notation的缩写,它是一种数据交换格式
收到一个JSON格式的字符串,只需要把它反序列化成一个JavaScript对象,就可以在JavaScript中直接使用这个对象了,把任何JavaScript对象变成JSON,就是把这个对象序列化成一个JSON格式的字符串,这样才能够通过网络传递给其他计算机。如果我们收到一个JSON格式的字符串,只需要把它反序列化成一个JavaScript对象,就可以在JavaScript中直接使用这个对象了。
JSON是结构化数据串行化的文本格式,作为XML的一种替代品,用于表示客户端与服务器间数据交换有效负载的格式
json序列化其实就是把一个对象转化为json字符串json.stringfy()
json反序列化就是把一个json字符串转化为对象json.parse().

对象的序列化和反序列化主要就是使用ObjectOutputStream 和 ObjectInputStream

序列化:就是将内存的对象转化为字节序列,方便在网络传输或者持久化到磁盘上
将对象序列化有两步骤:
第一: 将对象转换为字节数组
第二: 将字节数组存储到磁盘

public static byte[] getByteArray4Object(Object obj)throws Exception{
		 
		 ByteArrayOutputStream bao=new ByteArrayOutputStream();
		 ObjectOutputStream os=new ObjectOutputStream(bao);
		 os.writeObject(obj);
		 return bao.toByteArray();
		 
	 }

public static void writeByteArrayToFile(String textFilePath,byte[]bytearr)throws Exception{

		FileOutputStream fos=new FileOutputStream(new File(textFilePath));
		fos.write(bytearr);
	}

反序列化:就是把字节序列转化为内存的对象,可以是文件中的,也可以是网络传输过来的

// 从文件中反序列化
    FileInputStream fis=new FileInputStream(textFilePath);
   ObjectInputStream ois=new ObjectInputStream(fis);
   User user2= (User) ois.readObject();
  //=========================

 // 字节流中反序列化
     byte[] bytearr=  getByteArray4Object(user);
	
	ByteArrayInputStream bais=new ByteArrayInputStream(bytearr);
	
	ObjectInputStream ois=new ObjectInputStream(bais);
	
	User user2=(User)ois.readObject();

8@RequestParam接受参数:不传这个参数会报500,传null的也可以成功
没有@RequestParam修饰的参数:可以不传,也不报500,成功
@RequestParam绑定对象类型,没有问题;

@RequestParam绑定基本数据类型,若required属性为true(默认为true)也没有问题;

@RequestParam绑定基本数据类型,若required属性为false(默认为true),且设置了defaultValue属性,没有问题;

@RequestParam绑定基本数据类型,若required属性为false(默认为true),且没有设置defaultValue属性,则当没有传该参数时,会报500(因为无法将null赋值给基本数据类型)