express 基本用法
启动一个http服务.
import express from 'express'; const app = express() //express 是个函数 app.listen(3000, () => { console.log("服务器启动成功,3000"); });
get 和post接口
//get //api地址,回调函数req是请求,res是响应 app.get("/get", (req, res) => { console.log(req.query); res.send("get"); }); app.post("/post", (req, res) => { // req.body console.log(req.body); //需要引入插件才能获得 res.send("post"); }); app.get("/get/:id", (req, res) => { //req.params res.send(req.params.id); });
接受前端的参数
get 用req.query
get 动态参数 用req.params
post
如果前端使用的是post并且传递json 需要注册此中间件 不然是undefined
app.use(express.json()); //解析json格式
模块化
src/user.js
import express from 'express' const router = express.Router() router.post('/login', (req, res) => { res.json({message: 'Login',code: 200}) }) router.post('/register',()=>{ res.json({message: 'Register',code: 200}) }) export default router
src/list
import express from "express"; const router = express.Router(); router.get("/getAll", (req, res) => { res.json({ message: "获取成功", code: 200, data: [{ id: 1 }] }); }); export default router;
最后在app.js导入使用
import express from "express"; import User from "./src/user.js" import List from "./src/list.js" const app = express(); app.use(express.json()); //解析json格式 app.use('/user',User) app.use('/list',List) 。。。。
注意
使用接口的适合 需要再加一层 比如
app.use('/user',User)
那么接口就是 /user/api
中间件
中间件是一个关键概念。中间件是处理HTTP请求和响应的函数,它位于请求和最终路由处理函数之间,可以对请求和响应进行修改、执行额外的逻辑或者执行其他任务。
中间件函数接收三个参数:req
(请求对象)、res
(响应对象)和next
(下一个中间件函数)。通过调用next()
方法,中间件可以将控制权传递给下一个中间件函数。如果中间件不调用next()
方法,请求将被中止,不会继续传递给下一个中间件或路由处理函数
实现一个日志中间件
npm install log4js
log4js是一个用于Node.js应用程序的流行的日志记录库,它提供了灵活且可配置的日志记录功能。log4js允许你在应用程序中记录不同级别的日志消息,并可以将日志消息输出到多个目标,如控制台、文件、数据库等
\middleware\logger.js
import log4js from 'log4js' //控制台输出 文件也要输出 log4js.configure({ appenders: { out:{ type: 'stdout', layout: { type: 'colored', } }, file:{ filename:'logs/server.log', type:'file', } }, categories: { default: { appenders: ['out','file'], level: 'debug' } } }) //req 接收前端数据 //res 返回给前端数据 //next 执行下一个中间件, 没有的话就卡住 const logger = log4js.getLogger('default') const LOggerMiddleware = (req, res, next) => { logger.debug(`[${ req.method }] ${req.url}`) next() } export default LOggerMiddleware;