这是我参与11月更文挑战的第19天,活动详情查看:2021最后一次更文挑战
请求参数处理
请求映射
之前我们定义路径使用getUser这种风格的,但是当路径多了之后就会显得十分麻烦,现在我们使用新的风格去开发,Rest的方式(使用HTTP请求方式动词来表示对资源的操作)
例如
/user GET-获取用户 DELETE-删除用户
多余的我们就不展示了,就简单举两个例子
1 | typescript复制代码 @RequestMapping(value = "/user",method = RequestMethod.GET) |
因为不想写前端页面了,所以直接使用Postman进行测试,效果都是一样的
)
可以看我们的路径是一样的,但是我们请求的方式不同,我们的得到的反馈就不同
如果是写页面测试的小伙伴,可能会遇到一个问题,就是除了get和post这两种方式好使以外,其他的请求方式不好使,这时候在method="post"
,下面再加上一个隐藏参数,<input name="_method" type="hidden" type="xxx"
,这样子做就可以了
当我们使用不同方式请求的时候,就会显得很麻烦,他就有一种新的注解@GetMapping("/user")
映射原理
SpringBoot自动配置欢迎页的 WelcomePageHandlerMapping。访问/能访问到index.html;
SpringBoot自动配置了默认的 RequestMapping
请求进来,挨个尝试所有的HandlerMapping看是否有请求信息。
- 如果有就找到这个请求对应的handler …如果有就找到这个请求对应的处理器
- 如果没有就是下一个 HandlerMapping …如果没有就是下一个处理映射
我们需要一些自定义的映射处理,我们也可以自己给容器中放HandlerMapping。
1 | kotlin复制代码 protected HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception { |
普通参数
我们传参的方式主要有四种
注解
使用@RequestParam
,我们可以通过路径的方式去获取信息
1 | typescript复制代码 @GetMapping("/car/{id}") |
其中的ID我们就可以通过指定的路径去获取
我们可以这样一个一个去获取值,也可以使用一个Map,都收集起来
1 | less复制代码 @GetMapping("/car/{id}/owner/{username}") |
我们的测试工具还是postman
小插曲
postman官网下载地址
postman汉化包
我们只需要将汉化包放在postman的文件夹下
C:\Users\79367\AppData\Local\Postman\app-9.1.5\resources
上面是我的路径
回归正题,我们可以使用注解去获取请求头
1 | less复制代码 @GetMapping("/car/{id}/owner/{username}") |
使用HttpServletRequest request
可以将信息传到域中
1 | typescript复制代码 @GetMapping("/goto") |
本文转载自: 掘金