RestFul接口设计

Posted renshen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RestFul接口设计相关的知识,希望对你有一定的参考价值。

RESTFul设计风格

1、Rest与RestFul

REST(英文:Representational State Transfer,简称REST),表述性状态转移,指的是一组架构原则。

Restful: 遵守了rest 原则 的web服务或web应用。

2、API设计六要素

资源路径(URI)、HTTP动词(Method)、过滤信息(query-string)、状态码(Status-code)、错误信息(Error)、返回结果(Result)

1)资源路径URI

资源:所有在服务器保存的数据(如:音乐/视频/文章/个人信息...)都是服务器端资源.(项目中资源通常都是指的数据表的一条数据)

URI(Uniform Resource Identifier):统一资源标志符,包含URL和URN。

URL(Uniform Resource Locator):统一资源定位符

URN(Uniform Resource Name):统一资源命名

在HTTP协议中, URI的组成如下

Schema://host[:port]/path[?query-string]

Schema: 使用的协议类型, 如http/https/ftp等

host: 主机域名或IP

port: 端口号(可选)

path: 路径

query-string: 查询参数(可选)

例子:

http://www.tpshop.com/users

https://www.tpshop.com:8080/users?id=100

2)HTTP动词(请求方式)

对于资源, 一般有4个操作, CURD(增/删/改/查)

GET: 从服务器获取资源(一项或多项)

POST: 在服务器新建一个资源

PUT: 在服务器更新资源, 服务器返回完整的属性

DELETE: 从服务器删除资源

3)过滤信息

通常也叫做请求参数或查询字符串。

4)响应状态码

服务端返回的信息, 用来告诉客户端操作结果。

常见状态码:

技术图片

 

 

5)错误信息

如果状态码是4xx或者5xx, 需要告诉客户端对应的错误信息. 通常以Json格式返回:

{

“error”: “错误信息”,

}

6)返回结果

针对不同的操作, 服务需要返回的结果应该符合这样的规范

GET /collections -- 返回资源列表(数组)

GET /collections/:id -- 返回单个资源 eg. /collections/1

POST /collections -- 返回新生成的资源

PUT /collections/:id -- 返回资源的完整属性

DELETE /collections/:id -- 返回204状态码+空文档

实际开发中,通常会将 状态码、错误信息、返回数据,都放到返回结果中。

比如:

技术图片

 

 

3、RestFul接口设计风格

RESTFul是一种软件设计风格, 主要用于有客户端与服务端交互的软件.

RESTFul 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。

RESTFul风格的数据接口示例:

以新闻资源为例:URI及HTTP动词设计如下

技术图片

 

 

 

以上是关于RestFul接口设计的主要内容,如果未能解决你的问题,请参考以下文章

restful 接口设计规范

Express应用案例 - RESTful接口设计规范

RESTful api接口安全优雅设计

如何设计一个优雅的RESTFUL的接口

如何设计一个优雅的RESTFUL的接口

无规矩不成方圆,聊一聊 Spring Boot 中 RESTful 接口设计规范