接口案例
介绍
realworld 案例。
RESTful 接口设计规范
- 协议:API 与 用户的通信协议,尽量使用 HTTPS 协议。
- 域名:应该尽量将API部署在专用域名之下
https://api.example.com
,如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下:https://example.com/api/
。 - 版本:
https://api.example.com/v1
- 路径:又称为“终点(endpoint)”,表示 API 的具体网址。
在 REATful 架构中,每一个网址代表一种资源(resource),所有网址中不能有动词,只能是名词,而且所用的名词往往和数据库的表格名对应。一般来说,数据库中的表都是同种记录的“集合(collection)”,所以API中的名词也应该使用复数:
https://api.example.com/v1/zoos
https://api.example.com/v1/animals
https://api.example.com/v1/employees
HTTP 动词
对于资源的具体操作类型,由 HTTP 动词表示。
常用的 HTTP 动词有下面五个:
GET(读取):从服务器获取资源
POST(创建):在服务器新建一个资源
PUT(完整更新):在服务器更新资源(客户端提供改变后的完整资源)
PATCH(部分更新):在服务器更新资源(客户端提供改变的属性)
DELETE(删除):从服务器删除资源 还有俩个不常见的 HTTP 动词:
HEAD:获取资源的元数据
OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。
过滤信息
如果记录数量很多,服务器不可能豆浆它们返回给用户。API 应该提供参数,过滤返回一下结果:
?limit=10
:指定返回记录的数量;?offset=10
:指定返回记录的开始位置;?sortly=name&order=asc
:指定返回结果按照哪个属性排序,以及排序顺序。?animal_type_id=10
:指定筛选条件状态码
创建项目
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
app.get('/', function (req, res) {
res.send('hello world!');
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
// PORT=5000 nodemon app.js
配置中间件
express.json()
express.urlencoded()
morgan('dev')
cors()
路由设计
代码实现
B站视频地址:P29-P55