携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第8天,点击查看活动详情
RESTful
含义
Representational state transfer 表述行状态传递
通过请求携带一些信息: 比如根据请求方法的不同, 映射到不同的handler方法上, 处理不同的业务
请求url: "/user" , 做查询, GET方法
请求url: "/user" , 做修改, POST方法
请求url: "/user" , 做更新, PUT方法
请求url: "/user" , 做删除, DELETE方法
由于请求url都相同, 区别他们的方式是根据请求方法的不同, 映射到不同的handler上.
但是当前基本上不做这种方式的开发, 仍旧用请求url来区分不同的请求. 并且在响应结果的时候想要json数据
/user/query
/user/edit
/user/login
/user/logout
使用资源+操作的形式来写请求url, 其中资源是一般是名词, 而操作是一个动词, 是对什么样的资源做什么样的操作.
这样写的好处是结构清晰, 直接查看请求url就可以知道该请求要做什么.
另一个好处是更方便我们使用过滤器(Filter)来过滤请求, 从而实现针对某些请求, 验证是否满足业务需求, 如果满足需求, 才能通过, 请求才能被处理.
比如做权限认证, 日志, 监控等.这里Filter的行为特征就类似于代理的功能.
我们还可以获得一些其他表述性信息, 因为对request做出了一定的封装, 所以可以在handler方法中用形参来接收这些额外表述性信息:
- 请求url
- 请求参数
- 请求头
- Cookie的name对应的value
- Session的key对应的attributeValue信息.
在之前, 这些信息可以通过request来拿到:
request.getRequestURL();
request.getParameter();
request.getHeader();
request.getCookies();
request.getSession.getAttribute();
现在, 我们可以通过注解来拿到不同的信息:
- 请求url @PathVariable
- 请求参数 @RequestParam
- 请求头 @RequestHader
- Cookie的name对应的value @CookieValue
- Session的key对应的attributeValue信息 @SessionAttribute
这些注解都是放到Handler方法方法的形参前面, 通过在handler方法中用形参来接收这样的信息.