📜  REST API(介绍)(1)

📅  最后修改于: 2023-12-03 14:47:04.695000             🧑  作者: Mango

REST API(介绍)

REST(Representational State Transfer,表现层状态转移)是一种架构风格,是以网络为中心构建的软件设计风格。RESTful API(RESTful Application Programming Interface,RESTful 应用程序编程接口),是实现 REST 风格设计的 API。相比传统的 SOAP(Simple Object Access Protocol,简单对象访问协议)接口,RESTful API 更加简单、易于理解和使用,也更加灵活和高效。

总体特征

RESTful API 的总体特征包括:

  • 构建在 HTTP 协议之上;
  • 使用标准的 HTTP 方法,如 GET、POST、PUT、DELETE 等;
  • 资源的表现形式(Representation)通过 MIME 类型(如 JSON、XML、HTML 等)来描述;
  • 无状态(Stateless),所有的请求都是相互独立、完全自包含的;
  • 使用超媒体(Hypermedia)作为应用程序状态的引擎,也就是 HATEOAS(Hypermedia As The Engine Of Application State)。
RESTful API 设计原则

RESTful API 的设计原则包括以下四个方面:

  1. 每一个资源都应该有一个 URI(Uniform Resource Identifier,统一资源标识符),可以通过其访问和操作该资源;
  2. 每个 URI 只对应一个资源,不应该混淆和搞混不同的资源;
  3. 使用 HTTP 方法来实现操作资源,如 GET 获取资源、POST 新增资源、PUT 修改资源、DELETE 删除资源等;
  4. 资源的表现形式(Representation)通过 MIME 类型(如 JSON、XML、HTML 等)来描述,客户端和服务器之间通过这些表现形式来传递数据和交互状态。
RESTful API 设计实践

在实践中,RESTful API 的设计可以遵循以下几个步骤:

  1. 确认资源(Resource),包括确定每个资源的名称、结构、属性等;
  2. 设计 URI,包括确定每个资源对应的 URI、URI 参数、查询字符串等;
  3. 根据 HTTP 方法来设计操作,包括对资源的 CRUD(Create、Read、Update、Delete)操作等;
  4. 设计资源的表现形式(Representation),包括确定 MIME 类型、数据格式、数据模型等;
  5. 增加版本控制(Versioning),避免 API 更新和改动对客户端造成影响;
  6. 增加安全性和权限控制,保证数据的安全和机密性;
  7. 提供 API 文档和测试工具,便于开发者调试和测试。
RESTful API 示例

下面是一个简单的 RESTful API 示例,实现对学生成绩的增删查改操作:

# 获取所有学生成绩
GET /students HTTP/1.1
Host: example.com
Accept: application/json

# 获取某个学生的成绩
GET /students/1234/scores HTTP/1.1
Host: example.com
Accept: application/json

# 新增一个学生的成绩
POST /students/1234/scores HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "subject": "Math",
    "score": 90
}

# 更新某个学生的成绩
PUT /students/1234/scores/1 HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "subject": "Math",
    "score": 95
}

# 删除某个学生的成绩
DELETE /students/1234/scores/1 HTTP/1.1
Host: example.com