作为前端程序员在平时也难免会编写一点后台Demo级别的代码,在语言选择上通常会选择Node.js作为主力工具,框架通常会选择老牌框架Express,在本文会讲解一个使用Express创建接口和搭建基本的Express
创建项目
- 创建一个文件夹后使用cd projectname 进入文件夹
- 使用npm init创建项目 输入命令行之后一路回车就行
- 安装常用的依赖 yarn add express cors nodemon
- 创建基本的文件夹结构
- 创建一个src文件夹用来存放主要代码,创建一个route来存放接口文件
- 将package.json中的script中创建一个start命令:"start": "nodemon --watch ./src ./src/index.js" 这样使用yarn start就可以启动项目
配置入口
index.js
代码语言:javascript复制const express = require("express");
const app = express();//使用Express
//接收POST请求的参数
app.use(
express.urlencoded({
extended: false,
})
);
app.use(express.json());
//通常设置robots.txt禁止搜索引擎扫描
app.use('/robots.txt', express.static('./file/robots.txt'));
//设置跨域
const cors = require("cors");
app.use(cors());
//监听端口
app.listen(3000, () => console.log(`run`));
这样是配置基本的入口文件
- 配置接口
创建一个.js的文件
代码语言:javascript复制const express = require('express');
const app = express();
const router = express.Router();
router.get('/', async (req, res) => {
let get = req.query; //接收get请求参数
let post = req.body; //接收post请求参数
res.json({
key: 'value'
})
})
module.exports = router;
- 引入express和express.router
- 设置路由的请求方式(常用:get,post,put,delete),设置路由请求路径
- req是请求相关信息,我们可以使用req.query和req.body来接收请求参数
- 对数据库或相关业务逻辑进行处理之后我们使用res进行返回res常用的返回方式就是json,返回对象前端接收进行服务器渲染,方便前后端分离
路由引用
在index.js中将编写好的接口挂载到入口文件中
代码语言:javascript复制app.use('/', require('./route/express'));
运行 yarn start 运行项目
我们使用postman请求一下
成功接收到服务器返回的数据
批量引用
如果有很多接口我们需要一个一个引用是一件很麻烦的事情,我们可以使用递归将route中的文件都视为路由文件统一引用
代码语言:javascript复制function fileDisplay(filePath) {
fs.readdir(filePath, function (err, files) {
if (err) {
console.warn(err);
} else {
files.forEach(function (filename) {
var filedir = path.join(filePath, filename);
fs.stat(filedir, function (eror, stats) {
if (eror) {
console.warn('获取文件stats失败');
} else {
var isFile= stats.isFile();
var isDir = stats.isDirectory();
if (isFile) {
app.use('/', require(filedir));
}
if (isDir) {
fileDisplay(filedir);
}
}
});
});
}
});
}
const fs = require('fs');
var path= require('path');
var filePath = path.resolve('./src/route');//填写存放路由的文件夹
fileDisplay(filePath);