一切福田,不離方寸,從心而覓,感無不通。

HTTP协议的四种传参方式

HTTP协议组成 协议内容示例 对应Spring注解
path info传参 /articles/12 (查询id为12的文章,12是参数) @PathVariable
URL Query String传参 /articles?id=12 @RequestParam
Body 传参 Content-Type: multipart/form-data @RequestParam
Body 传参 Content-Type: application/json,或其他自定义格式 @RequestBody
Headers 传参 @RequestHeader

path info传参

请求路径:http://localhost:8080/rest/articles/1

URL Query String传参

请求路径:http://localhost:8080/rest/articles?name=zhoujinyuan

Body 传参:@RequestParam

请求路径:http://localhost:8080/rest/articles1

开始我测试一直报错:required string parameter 'XXX’is not present

我的问题就是用了@RequestParam接收参数,必须接受表单形式的提交。类似get中❓后一键一值的那种。@RequestBody才是接收json形式的数据的!!!

Body 传参 和 Headers 传参

请求路径:http://localhost:8080/rest/articles2

@RequestBody接收json形式的数据自动转换成实体类!!!而且还可以接受集合类型的数据。

但是我还用了一个注解 @RequestHeader 。所以传json数据的同时也还要把请求头中的数据传过来(没有的话自定义一个也要穿过来,不然报错400)。

 

from:https://www.cnblogs.com/jinyuanya/p/13934722.html