node学习—express路由

一、express路由

1、使用环境

const express = require('express');
const app = express(); //创建一个express应用
const path = require("path");
const staticRoot = path.resolve(__dirname, "../public");

app.use(express.static(staticRoot));
// 解析 application/x-www-form-urlencoded 格式的请求体
app.use(express.urlencoded({
  extended: true
}));
// 解析 application/json 格式的请求体
app.use(express.json());
// 处理api请求
app.post("/api/student", (req, res) => {
  //添加学生
});

app.get("/api/student", (req, res) => {
  //获取学生
});

app.put("/api/student", (req, res) => {
  //获取学生
});

app.use(require('./errorMiddleware'));
const port = 5108;
app.listen(port, () => {
  console.log(`server listen on ${port}`);
});

这样一个方法一个接口,导致可维护性较低,代码比较冗余

2、Router路由

const express = require('express');
const app = express(); //创建一个express应用
const path = require("path");
const staticRoot = path.resolve(__dirname, "../public");

app.use(express.static(staticRoot));
// 解析 application/x-www-form-urlencoded 格式的请求体
app.use(express.urlencoded({
  extended: true
}));
// 解析 application/json 格式的请求体
app.use(express.json());
// 处理api请求
const studentRouter = express.Router();

studentRouter.get("/",(req,res)=>{
  console.log("获取学生");
});
studentRouter.get("/:id",(req,res)=>{
  console.log("获取单个学生");
});
studentRouter.post("/",(req,res)=>{
  console.log("添加学生");
});
app.use("/api/student",studentRouter);

app.use(require('./errorMiddleware'));
const port = 5108;
app.listen(port, () => {
  console.log(`server listen on ${port}`);
});

3、接口实现

//init.js
const express = require('express');
const app = express(); //创建一个express应用
const path = require("path");
const staticRoot = path.resolve(__dirname, "../public");
app.use(express.static(staticRoot));

// 解析 application/x-www-form-urlencoded 格式的请求体
app.use(express.urlencoded({
  extended: true
}));

// 解析 application/json 格式的请求体
app.use(express.json());

// 处理api请求
app.use("/api/student",require("./api/student"));

app.use(require('./errorMiddleware'));
const port = 5018;
app.listen(port, () => {
  console.log(`server listen on ${port}`);
});

信息返回

//getSendResult.js
exports.getErr = function (err = "server internal error", errCode = 500) {
  return {
    code: errCode,
    msg: err,
  };
};

exports.getResult = function (result) {
  return {
    code: 0,
    msg: "",
    data: result,
  };
};

exports.asyncHandler = (handler) => {//封装函数,防止异步过程中发生错误
  return async (req, res, next) => {
    try {
      const result = await handler(req, res, next);
      res.send(exports.getResult(result));
    } catch (err) {
      next(err);
    }
  };
};

接口实现

//api/student
const express = require("express");
const router = express.Router();
const stuServ = require("../../services/studentService");
const { asyncHandler } = require("../getSendResult");

router.get(
  "/",
  asyncHandler(async (req, res) => {
    const page = req.query.page || 1;
    const limit = req.query.limit || 10;
    const sex = req.query.sex || -1;
    const name = req.query.name || "";
    return await stuServ.getStudents(page, limit, sex, name);
  })
);

router.get(
  "/:id",
  asyncHandler(async (req, res) => {
    return await stuServ.getStudentById(req.params.id);
  })
);

router.post(
  "/",
  asyncHandler(async (req, res, next) => {
    return await stuServ.addStudent(req.body);
  })
);

router.delete(
  "/:id",
  asyncHandler(async (req, res, next) => {
    return await stuServ.deleteStudent(req.params.id);
  })
);

router.put(
  "/:id",
  asyncHandler(async (req, res, next) => {
    return await stuServ.updateStudent(req.params.id, req.body);
  })
);

module.exports = router;

在这里插入图片描述
在这里插入图片描述
博主开始运营自己的公众号啦,感兴趣的可以关注“飞羽逐星”微信公众号哦,拿起手机就能阅读感兴趣的文章啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞羽逐星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值