启动一个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.bodyconsole.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;