文章分类管理接口

2023-10-27 18:20
文章标签 接口 文章 分类管理

本文主要是介绍文章分类管理接口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

前言

新建表

获取文章分类列表接口

初始化路由模块

将路由对象导出并使用

初始化路由对象处理函数

修改路由代码

导入数据库

定义sql语句

调用db.query()

完整的获取文章分类列表处理函数

新增文章分类接口

定义路由和处理函数

验证表单数据

查询分类名称与别名是否被占用

实现新增文章分类的功能

新增文章分类完整处理函数

根据id删除文章分类接口

定义路由和处理函数

验证表单数据

实现删除文章分类的功能

根据 Id 更新文章分类数据接口

定义路由和处理函数

验证表单数据

查询分类名称与别名是否被占用

实现更新文章分类的功能


前言

本文包含获取文章分类列表接口新增文章分类接口根据id删除文章分类接口根据id获取文章分类数据接口根据id更新文章分类数据接口

新建表

获取文章分类列表接口

初始化路由模块
// 创建路由对象
const express = require('express')
const router = express.Router()router.get('/cates',(req,res)=>{res.send('获取分类成功')
})// 向外导出路由对象
module.exports=router
将路由对象导出并使用

在服务器中

// 导入并使用获取文章列表信息
const artcateRouter = require('./router/artcate')
app.use('/my/article',artcateRouter)

使用postman模拟发送请求

初始化路由对象处理函数
// 向外导出获取文章列表处理函数
exports.getArticleCates=(req,res)=>{res.send('获取成功')
}
修改路由代码
// 获取文章分类的列表数据
router.get('/cates',artcate_handler.getArticleCates)

postman验证

导入数据库
// 导入数据库操作模块
const db = require('../db/index')
定义sql语句
const sql = 'select * from ev_article_cate where is_delete=0 order by id asc'
调用db.query()
db.query(sql,(err,results)=>{// 验证sql语句是否执行if(err) return res.send({status:1,message:err.message})res.send({status:0,message:'获取文章列表成功',data:results})})
完整的获取文章分类列表处理函数
// 向外导出获取文章列表处理函数
exports.getArticleCates=(req,res)=>{const sql = 'select * from ev_article_cate where is_delete=0 order by id asc'db.query(sql,(err,results)=>{// 验证sql语句是否执行if(err) return res.send({status:1,message:err.message})res.send({status:0,message:'获取文章列表成功',data:results})})
}

使用postman模拟发起请求

数据库中的信息

返回的数据

新增文章分类接口

定义路由和处理函数
// 新增文章分类的路由
router.post('/addcates', artcate_handler.addArticleCates)

处理函数

// 新增文章分类的处理函数
exports.addArticleCates = (req, res) => {res.send('新增成功')
}

postman验证接口

验证表单数据

创建文章分类数据验证模块,并定义验证规则

// 导入定义验证规则的模块
const joi = require('@hapi/joi')// 定义 分类名称 和 分类别名 的校验规则
const name = joi.string().required()
const alias = joi.string().alphanum().required()// 校验规则对象 - 添加分类
exports.add_cate_schema = {body: {name,alias,},
}

对数据进行验证

// 导入验证数据的中间件
const expressJoi = require('@escook/express-joi')
// 导入文章分类的验证模块
const { add_cate_schema } = require('../schema/artcate')// 新增文章分类的路由
router.post('/addcates', expressJoi(add_cate_schema), artcate_handler.addArticleCates)
查询分类名称与别名是否被占用

定义sql语句

 const sql = 'select * from ev_article_cate where name=? or alias=?'

调用db.query()执行查重操作

db.query(sql,[req.body.name,req.body.alias],(err,results)=>{// sql语句是否成功执行if(err) return res.send({status:1,message:err.message})// 名字和类名都被占用if(results.length === 2) return res.send({status:1,message:'类名与别名被占用'})// 名字和类名都被占用if(results.length === 1 && results[0].name === req.body.name && results[0].alias === req.body.alias) return res.send({status:1,message:'类名和别名被占用'})// 名字被占用if(results.length === 1 && results[0].name === req.body.name) return res.send({status:1,message:'类名被占用'})// 类名被占用if(results.length === 1 && results[0].alias === req.body.alias) return res.send({status:1,message:'别名被占用'})res.send('新增成功')})

使用postman验证

数据库中

当新增类名和别名与数据库中相同时

类名相同时

别名相同时

没有重复时

实现新增文章分类的功能

定义sql语句

const sql = 'insert ev_article_cate set ?'

调用db.query()新增文章分类

 db.query(sql,req.body,(err,results)=>{// 判断sql语句是否执行成功if(err) return res.send({status:1,message:err.message})if (results.affectedRows !== 1) return res.send({status:1,message:'新增文章分类失败'})res.send({status:0,message:'新增成功'})})
新增文章分类完整处理函数
// 向外导出新增文章列表处理函数
exports.addArticleCates=(req,res)=>{const sql = 'select * from ev_article_cate where name=? or alias=?'db.query(sql,[req.body.name,req.body.alias],(err,results)=>{// sql语句是否成功执行if(err) return res.send({status:1,message:err.message})// 名字和类名都被占用if(results.length === 2) return res.send({status:1,message:'类名与别名被占用'})// 名字和类名都被占用if(results.length === 1 && results[0].name === req.body.name && results[0].alias === req.body.alias) return res.send({status:1,message:'类名和别名被占用'})// 名字被占用if(results.length === 1 && results[0].name === req.body.name) return res.send({status:1,message:'类名被占用'})// 类名被占用if(results.length === 1 && results[0].alias === req.body.alias) return res.send({status:1,message:'别名被占用'})const sql = 'insert ev_article_cate set ?'db.query(sql,req.body,(err,results)=>{// 判断sql语句是否执行成功if(err) return res.send({status:1,message:err.message})if (results.affectedRows !== 1) return res.send({status:1,message:'新增文章分类失败'})res.send({status:0,message:'新增成功'})})})}

使用postman验证是否新增成功

在mysql数据库中

成功插入

根据id删除文章分类接口

定义路由和处理函数
router.get('/deletecate/:id',(req,res)=>{res.send('删除成功')
})

处理函数

// 向外导出根据id删除文章分类处理函数
exports.deleteArticleCates=(req,res)=>{res.send('删除成功')
}

修改路由

// 根据id删除文章分类
router.get('/deletecate/:id',artcate_handler.deleteArticleCates)

使用postman验证

注意需要在参数中携带id参数

验证表单数据

在规则定义模块中,定义id的校验规则

// 定义id的校验规则
const id = joi.number().integer().min(1).required()

向外共享校验对象

注意,这里是get请求,所以是params

exports.delete_cate_schema = {params: {id,},}

导入需要验证的对象

// 导入删除分类的验证规则对象
const { delete_cate_schema } = require('../schema/artcate')

路由中验证

// 根据id删除文章分类
router.get('/deletecate/:id',expressJoi(delete_cate_schema),artcate_handler.deleteArticleCates)
实现删除文章分类的功能

定义sql语句

直接删除数据过于危险,这里修改数据的状态码来表示删除

const sql = 'update ev_article_cate set is_delete=1 where id=?'

调用db.query()

 db.query(sql,req.params.id,(err,results)=>{// sql语句执行不成功if(err) return res.send({status:1,message:err.message})if(results.affectedRows!==1) return res.send({status:1,message:'删除文章分类失败'})res.send({status:0,message:'删除文章分类成功'})})

完整的根据id删除文章分类处理函数

// 向外导出根据id删除文章分类处理函数
exports.deleteArticleCates=(req,res)=>{const sql = 'update ev_article_cate set is_delete=1 where id=?'db.query(sql,req.params.id,(err,results)=>{// sql语句执行不成功if(err) return res.send({status:1,message:err.message})if(results.affectedRows!==1) return res.send({status:1,message:'删除文章分类失败'})res.send({status:0,message:'删除文章分类成功'})})
}

使用postman验证

原数据库中

发送删除请求后

在数据库中

根据 Id 更新文章分类数据接口

定义路由和处理函数

处理函数

// 向外导出根据id更新文章分类处理函数
exports.updateArticleCates=(req,res)=>{res.send('更新成功')
}

定义路由

// 根据id更新文章分类数据
router.post('/updateCate',artcate_handler.updateArticleCates)

postman验证

验证表单数据

在定义规则模块中定义规则并共享验证对象

 // 校验规则对象 - 更新分类
exports.update_cate_schema = {body: {Id: id,name,alias,},}

导入需要验证的对象,并在路由中验证

// 导入更新文章分类的验证规则对象
const { update_cate_schema } = require('../schema/artcate')// 根据id更新文章分类数据
router.post('/updateCate',expressJoi(update_cate_schema),artcate_handler.updateArticleCates)
查询分类名称与别名是否被占用

定义sql语句

在数据库中查找是否有相同的类名和别名,所以应该在除去用户传过来的id以外的数据中查找

const sql = 'select * from ev_article_cate where id<>? and (name=? or alias=?)'

调用db.query()

db.query(sql,[req.body.id,req.body.name,req.body.alias],(err,results)=>{if(err) return res.send({status:1,message:err.message})if(results.length === 2) return res.send({status:1,message:'类名和别名被占用,请重新更换'})if(results.length === 1 && results[0].name === req.body.name && results[0].alias === req.body.alias) return res.send({status:1,message:'类名和别名被占用,请重新更换'})if(results.length === 1 && results[0].name === req.body.name) return res.send({status:1,message:'类名被占用,请更换类名'})if(results.length === 1 && results[0].alias === req.body.alias) return res.send({status:1,message:'别名被占用,请更换别名'})res.send('更新成功')})
实现更新文章分类的功能

定义sql语句

const sql = `update ev_article_cate set ? where Id=?`

调用db.query()

db.query(sql,[req.body,req.body.Id],(err,results)=>{if(err) return res.send({status:1,message:err.message})if(results.affectedRows!==1) return res.send({satus:1,message:'更新失败'})res.send({status:0,message:'更新成功'})})

完整根据id更新文章分类数据的处理函数

// 向外导出根据id更新文章分类处理函数
exports.updateArticleCates=(req,res)=>{// 在数据库中查找是否有相同的类名和别名,所以应该在除去用户传过来的id以外的数据中查找const sql = 'select * from ev_article_cate where id<>? and (name=? or alias=?)'db.query(sql,[req.body.Id,req.body.name,req.body.alias],(err,results)=>{if(err) return res.send({status:1,message:err.message})if(results.length === 2) return res.send({status:1,message:'类名和别名被占用,请重新更换'})if(results.length === 1 && results[0].name === req.body.name && results[0].alias === req.body.alias) return res.send({status:1,message:'类名和别名被占用,请重新更换'})if(results.length === 1 && results[0].name === req.body.name) return res.send({status:1,message:'类名被占用,请更换类名'})if(results.length === 1 && results[0].alias === req.body.alias) return res.send({status:1,message:'别名被占用,请更换别名'})const sql = `update ev_article_cate set ? where Id=?`db.query(sql,[req.body,req.body.Id],(err,results)=>{if(err) return res.send({status:1,message:err.message})if(results.affectedRows!==1) return res.send({satus:1,message:'更新失败'})res.send({status:0,message:'更新成功'})})})}

使用postman

数据库中的数据

当类名重复时

别名重复时

没有重复时

数据库中数据被更新

这篇关于文章分类管理接口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/287501

相关文章

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

模拟实现vector中的常见接口

insert void insert(iterator pos, const T& x){if (_finish == _endofstorage){int n = pos - _start;size_t newcapacity = capacity() == 0 ? 2 : capacity() * 2;reserve(newcapacity);pos = _start + n;//防止迭代

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频)

这是什么系统? 资源获取方式在最下方 java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频) 停车管理信息系统是为了提升停车场的运营效率和管理水平而设计的综合性平台。系统涵盖用户信息管理、车位管理、收费管理、违规车辆处理等多个功能模块,旨在实现对停车场资源的高效配置和实时监控。此外,系统还提供了资讯管理和统计查询功能,帮助管理者及时发布信息并进行数据分析,为停车场的科学

股票数据接口-陈科肇

陈科肇 新浪财经 sz-深圳sh-上海历史分价表:http://market.finance.sina.com.cn/pricehis.php?symbol=sz000506&startdate=2016-12-27&enddate=2016-12-27历史成交明细(当日成交明细):http://vip.stock.finance.sina.com.cn/quotes_service/v

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python

实例demo理解面向接口思想

浅显的理解面向接口编程 Android开发的语言是java,至少目前是,所以理解面向接口的思想是有必要的。下面通过一个简单的例子来理解。具体的概括我也不知道怎么说。 例子: 现在我们要开发一个应用,模拟移动存储设备的读写,即计算机与U盘、MP3、移动硬盘等设备进行数据交换。已知要实现U盘、MP3播放器、移动硬盘三种移动存储设备,要求计算机能同这三种设备进行数据交换,并且以后可能会有新的第三方的

对接话费充值API接口的开发步骤以及各种优势

对接话费充值API接口通常涉及以下步骤: 1.选择API提供商: 研究并选择一个可靠的话费充值API提供商。考虑因素包括覆盖范围、费率、交易限额、客户支持和用户评价。 2.注册和获取API密钥: 在选定的API提供商平台上注册账户,并获取API密钥或访问令牌,这是调用API时进行身份验证的必要信息。 3.阅读API文档: 仔细阅读API文档,了解如何构建请求、需要哪些参数、API的

java类中定义接口的有哪些好处

第一步:首先是是定义一个类,同时里面定义接口 public class Util { public interface Worker { void work(int a); } } 第二步:定义一个类去实现第一步类中定义的接口 public class Demo implements Worker { @Override public void work(int a) { System