通用 CRUD 接口

通用 CRUD 接口,就是后台通过前端的URL,动态获取到里面的需要的参数,将参数处理成我们的DB模型接口,就可以使用了

1.改造接口,形成动态接口
// 改造前
const express = require("express");
const router = express.Router();
const Category = require("../models/Category");
router.get("/categories", async (req, res) => {
  let result = await Category.create(req.body);
  res.send(result);
});

// 改造后
const express = require("express");
const router = express.Router({
  mergeParams: true //合并url参数,获取url传的{:resource}
});
router.get("/", async (req, res) => {
  let Model = require(`../../models/${req.params.resource}`);
  res.send(result);
});
app.use("/admin/api/rest/:resource", router);

改造后的请求接口
在这里插入图片描述会报错在这里插入图片描述
因为我们拿到的是categories,但是我们要的是Category。

2.处理接口参数
  • npm i inflection(处理格式的插件),这里我们要拿到Category,因为我们model定义的是Category
    -
    -下面是获取 Category
const modelName = require("inflection").classify(req.params.resource); //复数转单数,首字母大写
res.send(modelName);
req.Model = require(`../../models/${modelName}`); //req.Model表示给请求对象上加上Model,之后的req都可以引用

在这里插入图片描述

  • 为了避免给每个接口添加这两句,所以要在app.use()中使用中间件
    // 通用CRUD接口
    app.use("/admin/api/rest/:resource",async (req, res, next) => {
	    const modelName = require("inflection").classify(req.params.resource); //复数转单数,首字母大写
	    req.Model = require(`../../models/${modelName}`); //req.Model表示给请求对象上加上Model,之后的req都可以引用
	    next();
      }, router);
改造完成

在这里插入图片描述
之后我们就可以通过Request URL,进行通用的增删改查,大大简化代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值