REST(英文:Representational State Transfer,简称REST)描述了一个架构样式的网络系统,比如 web 应用程序。它首次出现在 2000 年 Roy Fielding 的博士论文中,他是 HTTP 规范的主要编写者之一。在目前主流的三种Web服务交互方案中,REST相比于SOAP(Simple Object Access protocol,简单对象访问协议)以及XML-RPC更加简单明了,无论是对URL的处理还是对Payload的编码,REST都倾向于用更加简单轻量的方法设计和实现。值得注意的是REST并没有一个明确的标准,而更像是一种设计的风格。
版本(Versioning),RESTful建议是将API的版本号放入URL,例如https://api.xxxxxx.com/v1/,Github采用这种做法。
路径(Endpoint),表示API的具体网址。在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的”集合”(collection),所以API中的名词也应该使用复数。
HTTP Action动作,常用的HTTP动词有下面五个(括号里是对应的SQL命令)。 GET(SELECT):从服务器取出资源(一项或多项)。 POST(CREATE):在服务器新建一个资源。 PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。 PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。 DELETE(DELETE):从服务器删除资源。 还有两个不常用的HTTP动词。 HEAD:获取资源的元数据。 OPTIONS:获取属性信息。
认证方面,API的身份认证应该尽量使用OAuth 2.0框架,基于accessToken、sessionId之类的认证
服务器返回的数据格式,应该尽量使用JSON/JSONP,避免使用XML。
例如 1. 获取id为1的用户 method:GET URL:http://127.0.0.1:8080/user/1 2. 查询id为1的用户的权限 method:GET URL:http://127.0.0.1:8080/user/1/roles 3. 创建用户(建议根据id判断,有则更新,无则插入) method:POST URL:http://127.0.0.1:8080/user Data:userId=1,userName=xxxx,passWord=xxxx 4. 更新用户(建议根据id判断,有则更新,无则插入) method:PUT URL:http://127.0.0.1:8080/user Data:userId=1,userName=xxxx,passWord=xxxx 5. 删除用户 method:DELETE URL:http://127.0.0.1:8080/user/1
