什么是RESTful API,及简单使用

Java小课堂

分享人:牛涛

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备......)。 因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API构架的流行,RESTful API是目前比较成熟的一套互联网应用程序的API设计理论。

2.知识剖析

1、REST概念

(Representational State Transfer, REST)表述性状态转移

表述性(Representational):REST资源可以用各种形式来进行表述,包括XML JSON甚至HTML---最适合资源使用者的任意形式。

状态(State):当使用REST的时候,我们更关注资源的状态而不是对资源采用的行为。

转移(Trasfer):REST涉及到转移资源数据,它以某种表述性形式从一个应用转移到另一个应用。

REST就是将资源的状态以最适合客户端或者服务端的形式从服务器端转移到客户端(或者反过来)

2、RESTful API特点

基于“资源”,数据也好、服务也好,在RESTful设计里一切都是资源。

无状态。一次调用一般就会返回结果,不存在类似于“打开连接-访问数据-关闭连接”这种依赖于上一次调用的情况。

URL中通常不出现动词,只有名词

URL语义清晰、明确

使用HTTP的GET、POST、DELETE、PUT来表示对于资源的增删改查

3、与数据库操作的对应关系

GET(SELECT):从服务器取出资源(一项或多项)。

POST(CREATE):在服务器新建一个资源。

PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。

PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。

DELETE(DELETE):从服务器删除资源。

3、简单实例

在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的"集合"(collection),所以API中的名词也应该使用复数。

就是URL定位资源,用HTTP动词(GET,POST,DELETE,PUT,PATCH)描述操作。

GET /users: 列出所有用户,并返回对象列表。

POST /users: 新建一个用户,并返回新生成的对象。

GET /users/id: 获取某个指定用户的信息,返回指定用户对象。

PUT /users/id: 更新某个指定用户的信息(提供该用户的所有信息),返回指定用户对象。

PATCH /users/id: 更新某个指定用户的信息(提供部分信息),返回指定用户对象。

DELETE /users/id: 删除某个用户,返回空文档。

3.常见问题

为什么使用RESTful API?

4.解决方案

看Url就知道要什么


看http method就知道干什么


看http status code就知道结果如何


5.编码实战

6.扩展思考

对于用户登录和用户退出这两个业务需求,REST指导下的架构和设计如何满足?

登录”作为一个资源,所以登录是POST /logins,退出是DELETE /logins/{id}

就是Token的POST和DELETE

7.参考文献

https://www.zhihu.com/question/33959971/answer/57593571

8.更多讨论

今天的分享就到这里啦,欢迎大家提问和探讨!