RESTful是什么意思?

129 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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方法中用形参来接收这样的信息.