目录
express 项目
这一章节,可以是说整个项目建立的基础部分。主要是是项目模块化。通过本章的学习可以实现项目代码目录清晰,已经构建相对健全的框架结构。
1. app.js 项目入口文件,基础依赖安装和挂载。
- 在app.js 入口文件中,首先是创建express服务。
const express = require('express');
const app = express();
- 其次引入路由文件,设置路由前置路径配置,配置好端口。
const router = require('./router');
app.use('/api/v1', router) // 路由前置路径配置
const PORT = process.env.port || 3000; // 端口号
- 使用一些第三方的依赖包
const cors = require('cors'); // 跨域处理
app.use(express.json()); // 客户端json 解析
app.use(express.urlencoded()); // 这是Express中内置的中间件功能。它解析带有url编码的有效载荷的传入参数
// 第三中间件 解决跨域 cors npm install cors
app.use(cors());
- 启用express服务并且监听
app.listen(PORT, ()=>{
console.log('Run Htpp://127.0.0.1:3000')
})
2. RESful API接口规范
参考学习
https://restfulapi.cn/restful-api-request
- API请求规范
- HTTP 动词
GET: 读取(Read)
POST: 新建(Create)
PUT: 更新(Update)
PATCH: 更新(Update),通常是部分更新
DELETE:删除(Delete)- URL(宾语)必须是名词
/getAllCars
/createNewCar
/deleteAllRedCars
建议都使用复数
- API响应规范
- 状态码
HTTP 状态码就是一个三位数,分成五个类别。
1xx:相关信息
2xx:操作成功
3xx:重定向
4xx:客户端错误
5xx:服务器错误- 具体状态码规范
200状态码表示操作成功,但是不同的方法可以返回更精确的状态码。
GET: 200 OK
POST: 201 Created
PUT: 200 OK
PATCH: 200 OK
DELETE: 204 No Content
3xx 状态码
API 用不到301状态码(永久重定向)和302状态码(暂时重定向,307也是这个含义)
4xx 状态码
400 Bad Request:服务器不理解客户端的请求,未做任何处理。
401 Unauthorized:用户未提供身份验证凭据,或者没有通过身份验证。
403 Forbidden:不具有访问资源所需的权限。
404 Not Found:所请求的资源不存在,或不可用。
405 Method Not Allowed:用户已经通过身份验证,但是所用的 HTTP 方法不在他的权限之内。
5xx状态码
500 Internal Server Error:客户端请求有效,服务器处理时发生了意外。
503 Service Unavailable:服务器无法处理请求,一般用于网站维护状态。
3. 路由模块-router文件夹
- index.js 文件作为入口文件,代码主要功能创建路由对象,使用第三方日志文件包
- 导入各个模块的路由地址。
const express = require('express');
const router = express.Router();
const {
logger } = require('../middleware/logger');
router.use('/user',logger, require('./user'))
module.exports = router;
3.user.js 代码
- 首先考虑的是在user模块中。我们的路由接口都有:注册registers,登录login,查询lists,删除delete。
- user模块中,路由配置参数格式校验。
- user模块中,路由配置参数token校验。
- user模块中,路由配置参数业务逻辑。
const express = require('express'); // 引入express
const router = express.Router(); // 创建router对象
const userControl = require('../controller/user') // 引入业务处理模块
const validator = require(