【Node.js+koa--后端管理系统】设计动态发布、修改、查询、删除接口

简介: 【Node.js+koa--后端管理系统】设计动态发布、修改、查询、删除接口

动态内容接口设计思路

微信图片_20221012212437.png

发布动态内容接口


① 创建新的动态内容表


建表语句:

CREATE TABLE IF NOT EXISTS `moment`(
  id INT PRIMARY KEY AUTO_INCREMENT,
  content VARCHAR(1000) NOT NULL,
  user_id INT NOT NULL,
  createAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updateAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  FOREIGN KEY(user_id) REFERENCES user(id)
);

② 定义发布动态内容的接口


验证用户是否具备权限verifyAuth (//目录:@/middleware/auth_middleware.js)–> 创建动态

//目录:@/router/moment_router.js
// 创建动态
const Router = require('koa-router')
const {
  create, 
} = require('../controller/moment_controller')
const { 
  verifyAuth,
} =require('../middleware/auth_middleware')
const momentRouter = new Router({prefix: '/moment'})
//创建动态
momentRouter.post('/',verifyAuth,create)

③ controller层的函数处理

微信图片_20221012212716.png

④ service 层数据库处理

微信图片_20221012212731.png

修改动态内容接口


① 定义路由接口

微信图片_20221012212824.png

② 验证用户是否授权和用户权限


PS: 很多的内容都需要验证权限: 修改/删除动态,修改/删除评论

接口:业务接口系统/后端管理系统

一对多:user—>role

多对多:role—>menu(删除动态和修改动态)

//目录:@/middleware/auth_middleware.js
// 验证已登录用户是否具备修改内容权限中间件
const verifyPermission = async(ctx,next)=>{
  console.log("验证已登录用户是否具备修改内容权限middleware");
  // 1.获取用户参数
  const [resourceKey ]= Object.keys(ctx.params) 
  const tableName = resourceKey.replace('Id','')
  const resourceId = ctx.params[resourceKey]
  const { id } = ctx.user
  // console.log(momentId,id);
  // 2.查询是否具备权限
  try{
    const isPermission = await authServiece.checkResource(tableName,resourceId,id)
    if(!isPermission) throw new Error()
  }catch(err){
    const error = new Error(errorTypes.UNPERMISSION)
    return ctx.app.emit('error',error,ctx)
  } 
  await next()
}
//目录:@/service/auth_service.js
// 数据库查询用户是否存在
const connection = require('../app/database')
class AuthService {
  async checkResource (tableName,id,userid){
    const statement  = `SELECT * FROM ${tableName} WHERE id = ? AND user_id = ?;`;
    const [result] = await connection.execute(statement,[id,userid])
    return result.length === 0? false:true;
  }
}
module.exports = new AuthService()

③ controller层的函数处理

微信图片_20221012212947.png

④ service 层数据库处理

微信图片_20221012213017.png

查询动态内容接口


① 定义路由接口

//目录:@/router/moment_router.js
// 创建动态
const Router = require('koa-router')
const {
  create, 
} = require('../controller/moment_controller')
const { 
  verifyAuth,
} =require('../middleware/auth_middleware')
const momentRouter = new Router({prefix: '/moment'})
// 创建动态
momentRouter.post('/',verifyAuth,create)
// 获取动态信息
momentRouter.get('/',list) //获取动态列表
momentRouter.get('/:momentId',detail) //获取单个列表

② 定义查询内容的接口(单个)

微信图片_20221012213148.png微信图片_20221012213153.png

③ 定义查询内容的接口(列表)

微信图片_20221012213231.png微信图片_20221012213236.png

最后更新:

微信图片_20221012213256.png

删除动态内容接口


① 定义路由接口

微信图片_20221012213344.png

② 验证用户登录和验证用户权限


见上面(verifyAuth)和(verifyPermission)


③ Controller和Service中的处理

微信图片_20221012213458.png

动态接口设计完成


相关文章
|
6月前
|
JavaScript Linux 内存技术
Debian 11系统下Node.js版本更新方法详解
本指南详细介绍在Linux系统中安装和管理Node.js的步骤。首先检查现有环境,包括查看当前版本和清除旧版本;接着通过NodeSource仓库安装最新版Node.js并验证安装结果。推荐使用nvm(Node Version Manager)进行多版本管理,便于切换和设置默认版本。同时,提供常见问题解决方法,如权限错误处理和全局模块迁移方案,以及版本回滚操作,确保用户能够灵活应对不同需求。
525 0
|
6月前
|
JavaScript Linux 内存技术
Debian 11系统下Node.js版本更新方法
Debian 11更新Node.js主要就是这三种方式,无论你是初涉其中的新手还是找寻挑战的专家,总有一种方式能满足你的需求。现在,你已经是这个
629 80
|
7月前
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
521 17
|
7月前
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
164 18
|
7月前
|
开发框架 关系型数据库 Java
Linux操作系统中JDK、Tomcat、MySQL的完整安装流程以及J2EE后端接口的部署
然后Tomcat会自动将其解压成一个名为ROOT的文件夹。重启Tomcat,让新“植物”适应新环境。访问http://localhost:8080/yourproject看到你的项目页面,说明“植物”种植成功。
232 10
|
10月前
|
人工智能 搜索推荐 API
node-DeepResearch:开源复现版OpenAI Deep Research,支持多步推理和复杂查询的AI智能体
node-DeepResearch 是一个开源 AI 智能体项目,支持多步推理和复杂查询,帮助用户逐步解决问题。
1089 27
node-DeepResearch:开源复现版OpenAI Deep Research,支持多步推理和复杂查询的AI智能体
|
10月前
|
JavaScript 前端开发 数据可视化
【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
592 2
【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
|
9月前
|
SQL JSON 关系型数据库
17.6K star!后端接口零代码的神器来了,腾讯开源的ORM库太强了!
"🏆 实时零代码、全功能、强安全 ORM 库 🚀 后端接口和文档零代码,前端定制返回 JSON 的数据和结构"
178 1
|
11月前
|
关系型数据库 MySQL 测试技术
记录一次后端接口抖动的排查过程
某天下午,测试新功能时发现页面接口偶尔变慢,平均十次调用中有三到四次出现3秒以上的延迟。排查了接口、数据库和服务器资源后未发现问题,最终锁定为K8s节点的负载均衡策略导致。测试环境仅有一个公网IP,SLB轮询四个Pod(其中三个为空),造成周期性延迟。移除空Pod后问题解决。
296 5
|
12月前
|
监控 算法 JavaScript
基于 Node.js Socket 算法搭建局域网屏幕监控系统
在数字化办公环境中,局域网屏幕监控系统至关重要。基于Node.js的Socket算法实现高效、稳定的实时屏幕数据传输,助力企业保障信息安全、监督工作状态和远程技术支持。通过Socket建立监控端与被监控端的数据桥梁,确保实时画面呈现。实际部署需合理分配带宽并加密传输,确保信息安全。企业在使用时应权衡利弊,遵循法规,保障员工权益。
237 7