RESTful 架构介绍

RESTful介绍

REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。
RESTful是一个针对URI的架构,使用RESTful风格的URI可以使URI更具可读性。代码更加整洁且富有逻辑性。
首先要明白,RESTful架构是面向资源的。
每一个URI可以确定一个资源。而用户或程序员使用RUI其实就是在操作资源。
因此至始至终都应该围绕资源来设计URI。

使用RESTful架构作用

1)使URI更具可读性,避免无意义的URI。URI的作用就是指向一个确定的资源。通过URI就可以知道操作的是什么资源。

2)使用一个合理的URI架构可以简化开发,避免走入误区,减少犯错成本。

3)构建起程序员之间的约定。像SpringBoot的理念一样约定大于配置。大家保持同一个约定,那么你就可以更加高效的读懂其他人的代码。可以大幅节约开发时间,减少不必要的误解。

RESTful架构的原则

知道了RESTful架构的作用,那么接下来就进入正题吧。真正学习如何使用RESTful架构。

1.明确URI在操作什么资源

假设现在要做一个登录模块,那么登录时操作的资源就是用户(user)
那么你的URI就应该使用/user/users
这个单词用单数形式还是复数形式都可以,这里建议使用复数形式。
比如你的服务器网址是http://api.example.com
那么操作user的URI就可以是http://api.example.com/users

2.明确URI在做什么操作。

RESTful架构要求统一使用标准的HTTP方法。如GETPOSTPUT等。

GET

安全且幂等
获取表示
变更时获取表示(缓存)
使用GET不应该对服务器状态产生影响。例如增加session之类。

POST

不安全且不幂等
使用服务端管理的(自动产生)的实例号创建资源
创建子资源
部分更新资源

PUT

不安全但幂等
用客户端管理的实例号创建一个资源
通过替换的方式更新资源

DELETE

不安全但幂等
删除资源

3.可以在URI里带上资源的主键

如果要使用主键来获得资源可以在URI里加上主键。如:
http://api.example.com/users/1
要获取资源集合的话,可以用,;来分割主键。如:
http://api.example.com/users/1,2,3,4
http://api.example.com/users/1;2;3;4

4.在URI里边带上版本号

有些API在URI里边带上版本号,例如:
http://api.example.com/1.0/users
http://api.example.com/2.0/users
http://api.example.com/3.0/users

用来区分不同版本的URI接口。

5.使用/来区分资源的层级关系

例如上述
/git/git/commit/e3af72cdafab5993d18fae056f87e1d675913d08
就表示了一个多级的资源, 指的是git用户的git项目的某次提交记录,
又例如/orders/2012/10可以用来表示2012年10月的订单记录。

6.使用?用来过滤资源

很多人只是把?简单的当做是参数的传递,很容易造成URI过于复杂、难以理解。
可以把?用于对资源的过滤,
例如/git/git/pulls用来表示git项目的所有推入请求,
/pulls?state=closed用来表示git项目中已经关闭的推入请求,
这种URL通常对应的是一些特定条件的查询结果或算法运算结果。

参考资料

RESTful 架构详解

你可能感兴趣的:(restful,架构,java)