@RequestParam注解参数
- @RequestParm获取的是url上的参数。
- @RequestParm加了并且未设置required为false则该参数为必传
- 请求方式为:
-
application/x-www-form-urlencoded。这是一种默认编码方式,会将参数以键值对的形式发给服务器。例如:name=hk111111&sex=1,可以在url上,还可以在请求体内。
-
form-data。表单
http请求中的multipart/form-data,会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。
既可以上传键值对,也可以上传文件
当上传的字段是文件,会使用content-type表明文件类型;content-disposition说明字段的一些信息。
由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对。GET /api/test/requestParam HTTP/1.1 Content-Type: multipart/form-data; boundary=--------------------------836634504018956440582175 User-Agent: PostmanRuntime/7.17.1 Accept: */* Cache-Control: no-cache Postman-Token: 79944db1-c0cc-46a3-9a33-ae554d78b2e0 Host: localhost:8888 Accept-Encoding: gzip, deflate Cookie: JSESSIONID=41A840ADD2AA4F9186D82E4A177BF7A8 Content-Length: 19460 Connection: keep-alive ----------------------------836634504018956440582175 Content-Disposition: form-data; name="name" hk3 ----------------------------836634504018956440582175 Content-Disposition: form-data; name="sex" 1 ----------------------------836634504018956440582175 Content-Disposition: form-data; name="picture"; filename="22.jpg" Content-Type: image/jpeg ......JFIF.............C........... . .. ................. $.' ",#..(7),01444.'9=82<.342...C. .... .2!.!22222222222222222222222222222222222222222222222222...........".....................................
-
multipart/form-data与application/x-www-from-urlencoded区别
-
multipart/form-data:既可以上传二进制数据,也可以上传表单键值对,只是最后会转化为一条信息
-
x-www-from-urlencoded:只能上传键值对,并且键值对都是间隔分开的。
-
@RequestBody注解
- @requestBody是用来接收前端发送的json格式的数据。(请求体中)
- 在一个请求中,@RequestParam()和@RequestBody可以同时使用,@RequestBody只有一个,@RequestParam()可以有多个。
- @RequestParam和@RequestBody同时使用时,需采用post请求,并且url上需要带参数供@RequestParam解析。
参考资料
[^ 1] @RequestBody的使用