什么叫RESTful风格
RESTful是 Representational State Transfer 的缩写,它是一种面向资源的架构风格,目的是通过URL定位到资源,使用HTTP协议中定义的HTTP方法(GET、POST、PUT、DELETE、PATCH等)对资源进行操作。
而RESTful的接口设计规范中,就有一种常见的命名方式称为RESTful风格(也称为RESTful API),即符合RESTful规范的接口实现方式,包括遵循URI设计规范、使用HTTP请求方式进行业务操作、返回结果采用标准的HTTP响应状态码等。
RESTful风格的接口设计要求使用明确的HTTP方法(例如GET、POST、PUT、DELETE等)表示操作类型,而不是将所有请求发送到同一个地址,通过参数来区分是哪种操作。同时,根据请求返回的结果(例如成功、失败,或是返回数据),使用不同的HTTP响应状态码来区分,而不是将所有结果都塞到响应体里面返回。
总之,RESTful风格的接口设计,旨在实现对URL资源的标准化,使得URL能够代表一种完整资源,每个URL代表一种标准操作,使用标准的HTTP状态码和数据格式,能够达到更好的可读性、可靠性和可维护性,同时提高接口的安全性。
RESTful 风格的接口设计需要遵循以下几个原则:
- 路径(URI)是资源的唯一标识,应该尽量简洁,符合语义,并使用小写字母和短横线(-)作为单词间的分隔符。
例如,获取用户列表的API应该设计为 /users
,而不是 /getUserList
- HTTP 方法和请求体(Request Body)用于表示资源的操作和更新。
HTTP 方法用于表示资源操作类型,如 GET、POST、PUT、DELETE、PATCH 等,而请求体数据用于更新和新增资源。
- HTTP 响应状态码(Response Code)和响应体(Response Body)用于表示操作结果。
HTTP 响应状态码是专门为标识客户端请求处理结果而设计的,不同的状态码表示不同的操作结果。 RESTful 接口中,我们需要保证返回的 HTTP 响应状态码标识明确,符合标准,通常返回的状态码包括:
- 2xx 表示成功处理了请求。
- 3xx 表示需要客户端进一步操作,如重定向。
- 4xx 表示客户端错误,如请求格式错误、资源不存在。
- 5xx 表示服务器错误,如服务器内部错误。
响应体用于表示请求结果的数据,应该采用标准 JSON 格式编写,并采用友好的格式显示给用户。
以下是一个符合 RESTful 风格的示例:
获取用户列表
GET /users HTTP/1.1 HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 [ { "id": 1, "name": "John", "age": 20, "gender": "male" }, { "id": 2, "name": "Lucy", "age": 22, "gender": "female" } ]
新增用户
POST /users HTTP/1.1 Content-Type: application/json; charset=utf-8 { "name": "David", "age": 24, "gender": "male" } HTTP/1.1 201 Created Location: /users/3
更新用户
PUT /users/1 HTTP/1.1 Content-Type: application/json; charset=utf-8 { "name": "Tom", "age": 21, "gender": "male" } HTTP/1.1 200 OK
删除用户
DELETE /users/2 HTTP/1.1 HTTP/1.1 204 No Content