@RequestParam和@RequestBody注解
@RequestBody注解用来解析前端传递给后端请求体中的数据;因为GET方式无请求体,所以使用@RequestBody需要用POST方式提交。
@RequestParam用来解析url中的k-v数据,GET、POST提交方式都可以使用此注解。
在后端的同一个方法里只能有一个@RequestBody,但是可以有多个@RequestParam。
注意:
POST请求的消息主体放在entity body中,通过Content-Type字段获得消息主体的编码方式,进而进行解析。
- application/x-www-form-erlencoded
表单的方式提交数据,提交的表单会自动转换成k-v的形式。 - multipart/form-data
表单的数据会处理成一条消息,以标签为单元,用分割符分开,类似上面形式。 - application/json
告诉后端消息主体序列化后是json字符串。(spring的@RequestBody就是根据这个特性实现的) - text/xml
用xml传输和存储数据。json出现之前用的比较多。 - application/octect-stream
只能提交二进制,只能是流或者字节数组。
调试有可能出现的问题?
如果Content-Type设置出错往往会导致后端后端接收数据为空,如果调试过程中出现无数据的情况,先确定客户端设置的Contend-Type类型,确定没问题后,如果还有问题在查找其他方面。