获取 express 的全局应用
const express = require("express");
const app = express();
原生中是需要监听请求事件的(server.on("request",(req,res)=>{})), express 已经封装好了,现在只需要调用 app 的监听请求方法或者请求路径
监听 get 请求
// 将传入的方法promise化
const { promisify } = require("util");
const readFile = promisify(fs.readFile);
// req,res 这些是经过扩展的
app.get('/',(req,res) => {
try {
const data = await readFile("./data/db.json", "utf8");
let back = JSON.parse(data);
// 以前是res.end,现在换成express提供的send:数据转义并且响应返回
res.send(back.users);
} catch (error) {
//设置状态码
res.status(500).json({ error });
}
})
监听 post 请求
//可以获取到客户端发送的xxx-form...对应的类型的数据
app.use(express.urlencoded())
//可以获取到客户端发送的json对应的类型的数据
app.use(express.json())
//判断客户端发送数据的格式
console.log(req.headers);
//获取数据
console.log(req.body);
...进行一系列的数据操作
res.status(200).send({ msg: "添加成功" });
res.status(500).json({ msg: "添加失败", error });
监听 put 请求
//:id占位符
app.put("/:id",(req,res) => {
console.log(req.params.id);
console.log(req.body);
})
app.all 不管什么请求,只要路径对了就行
app.all('/xxx',() => {})
路径可用正则
//?前可以省略
app.all('/us?er')
//+q 前的字母可以写多个
app.all('/us+er')
// * 通配符
app.all('/us*er')
因为 express 是针对于 http 模块做的扩展因此还手动监听
app.listen(8080, () => {
console.log("Run http://127.0.0.1:8080");
});