node.js编写前端接口,服务器创建、数据库连接、路由挂载,增删改查、分页查询接口的编写

1.文件准备

我们要准备三个文件来演示最基础的服务器创建、数据库连接路由挂载,增删改查、分页查询接口的编写。其中服务器创建单独一个文件为app.js,数据库连接为一个文件为pool.js,最后一个为接口所在的文件,可以根据自己的需要进行命名,这里就叫coop.js为留言的意思。需要自己准备node的express包,目录架构如下图所示。
整个文件目录架构

2.app.js文件

这个地方用于存放其他文件暴露出来的接口,挂载这里进行运行,也是创建服务器的地方。

//引入express模块
const express=require('express');
//创建web服务器
const app=express();
//引入coop路由对象
const coop=require('./routes/coop')
//设置接口响应用户
app.listen(3000,()=>{
console.log('服务器已经启动')
})
//用于使用post请求时进行传递的参数转化为对象
app.use(express.urlencoded({extended:true}));
//挂载我们引入的路由对象模块
//'/v1/coop这是前缀为了给自己的接口进行分类,发送请求时别忘记加上
//127.0.0.1:3000/'/v1/coop/
app.use('/v1/coop',coop);
//在所有的路由后面添加错误处理中间件,拦截所有的错误,拦截错误好几种这种复用比较防弊
app.use((err,req,res,next)=>{
    // err 接收路由中传递的错误信息
    console.log(err);
    //响应给客户端的错误信息
    res.send({
        code:500,
        msg:'服务器内部错误'
    })
})

3.pool.js文件

这是数据库创建连接的文件,单独编写一个文件,可以复用,需要用到的时候直接进行引入模块进行复用。这个模块都是路由接口文件引用,用于对数据库发送sql语句。

//引入mysql,哦快
const mysql=require('mysql');
//创建数据库连接池
const pool=mysql.createPool({
    host:'127.0.0.1',
    port:'3306',
    user:'root',
    password:'123456',
    database:'hantang',
    connectionLimit:15,//数据库一次最大连接数量,如果不写就默认15
    multipleStatements:true//这时允许一次发送多条sql命令
})
//暴露连接池,让其他文件使用
module.exports=pool;

4.coop.js

这是接口文件,这个接口里有,增删改,查询和分页查询用其他的文件演示

//引入express模块
const express = require('express');
//创建路由对象
const pool = require('../pool');
//引入数据库连接池
const router = express.Router();
//post请求 /add 提交留言接口 请求地址 /v1/coop/add
//一般增加也就是插入新的内容用post比较安全不会暴露用户信息
//req是请求 res响应请求  
//next是下一个的意思 express中的一个方法把错误发送到错误处理的代码块中
router.post('/add',(req,res,next)=>{
   //获取传递过来的参数体
    let obj = req.body;
    //向参数体内添加当前时间,本数据库需要,不要的可以直接删除
    obj.ctime = Date.now();
    console.log(obj);
    //向数据库发送请求 set是自动和传递参数进行匹配,匹配不到的为默认值null
    pool.query('insert into ht_cooperate set ?'),[obj],(err,req)=>{
        if (err) {
        //这个地方是把错误返回到app.js最后的代码块处理错误
            return next(err)
        }
        res.send({ code: 200, msg: '留言成功' })
    })
})
//修改留言信息  put /update 修改一般用put请求
router.put('/update', (req, res, next) => {
    let obj = req.body;
    //向参数体内添加当前时间,本数据库需要,不要的可以直接删除
    obj.ctime = Date.now();
    console.log(obj);
    pool.query('update ht_cooperate set ? where cid=?', [obj,obj.cid], (err, req) => {
          //这是es6写法当{}只有一句代码时可以省略{}
        if (err) return next(err);
        console.log(req);
        //changedRows是判断是否修改为0的时候表示没修改,为1便是修改
        if (req.changedRows === 0) {
            res.send({ code: 400, msg: '失败' })
        } else {
            res.send({ code: 200, msg: '成功', data: req })
        }
    })
})
//删除留言 删除一般用get 速度块
router.get('/delete', (req, res, next) => {
    let obj = req.query;
    console.log(obj);
    pool.query('delete from ht_cooperate where cid=?', [obj.cid], (err, req) => {
        if (err) return next(err);
        console.log(req);
        //affectedRows是判断是否删除为0的时候表示没删除,为1便是删除
        if (req.affectedRows === 0) {
            res.send({ code: 400, msg: '失败' })
        } else {
            res.send({ code: 200, msg: '成功', data: req })
        }
    })
})
//以上便是接口中的增删改。

5.查询和分页查询

//新闻分类接口
//查询也是用get 速度快不怕信息暴露
router.get('/menu',(req,res,next)=>{
    let obj=req.query;
    console.log(obj);
    //ht_cat是数据库名字
    pool.query('select * from ht_cat',(err,req)=>{
        if(err){
            return next(err);
        }
        res.send({
            code:200,
            msg:'新闻分类',
            data:req
        })
    })
})
//分页查询
//查询招聘信息
router.get('/list', (req, res, next) => {
    let obj = req.query;
    obj.ctime = Date.now();
    console.log(obj);
    //判断传递的页码参数是否为空
    //这是为了展示第一页数据时就是不传参也可以正常显示
    if (!obj.pno) {
        obj.pno = 1
    }
    //判断传递的每页显示数量参数是否为空
    if (!obj.count) {
        obj.count = 2;
    }
    //计算开始查询的值
    let start = (obj.pno - 1) * obj.count;
    //将每页书记两转为数值
    let size = parseInt(obj.count);//或者写为Number(obj.count)
    // 执行sql 这里一次发送了两个sql,
    //我们在pool.js数据库连接池声明了可以一次发送多个sql命令
    //select count(*) as n from ht_job 这是给查询的结果count(*) 起了别名
    //也可以直接写select count(*) n from ht_job ,count()函数时统计总量
    pool.query('select * from ht_job limit ?,?; select count(*) as n from ht_job', [start, size], (err, req) => {
        if (err) return err;
        console.log(req);
        res.send({
            code: 200,
            msg: '查询成功',
            //因为数据库给我返回的是一个对象包含数组的形式
            //{[name:'ddd],[]}这样的形式
            data: req[0],
            tatal: req[1][0].n,//总数据量
            pages: Math.ceil(req[1][0].n / obj.count),//总页码
            pno: obj.pno//当前页码
        })
    })
})

6.总结

其实增删改查的接口套路都是一样的,主要就是sql命令的使用,和返回值的获取,get类的获取就用req.query ,post类的就用req.body获取。就分页查询比较复杂但是也是固定套路,多敲几遍就可以熟练。
注意:因为如果我们使用浏览器进行测试接口其中的put的delete请求是无法测试的,浏览器只能测试get,post两种,这里大家可以用ApiPost软件进行测试,挺好用的。
ApiPost基本使用

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: node.js 接口可以实现增加、删除、修改和查询操作。具体来说,可以通过编写相应的代码实现以下功能: 1. 增加:使用 POST 请求向服务器发送数据,服务器将数据存储到数据库中。 2. 删除:使用 DELETE 请求向服务器发送数据,服务器将数据从数据库中删除。 3. 修改:使用 PUT 请求向服务器发送数据,服务器将数据更新到数据库中。 4. 查询:使用 GET 请求向服务器发送数据,服务器将从数据库中获取数据并返回给客户端。 以上操作可以通过 node.js 框架中的 express 模块来实现,具体实现方式可以参考相关文档和教程。 ### 回答2: Node.js是一个基于Chrome V8 JavaScript引擎构建的服务器端平台,具有高效、轻量级、事件驱动和非阻塞I/O等特点,因此越来越受到开发者的欢迎。在Node.js中,我们可以使用各种模块和插件来搭建Web应用程序,其中接口增删改查是非常重要的一部分。下面我将用不少于300字的篇幅回答如下: 一、接口的概念 接口是指对外提供一定的服务和数据交互的方式,是Web应用程序与外部系统或用户之间通信的桥梁。通过接口我们可以实现数据的获取、传输、存储和操作等功能。 二、增加接口: 在Node.js中,我们通常使用express框架来创建Web应用,并通过路由(route)来定义接口的访问路径和操作方法。例如,我们可以使用如下代码来增加一个get接口: ``` const express = require('express'); const app = express(); app.get('/user/:id', function(req, res){ res.send('user:' + req.params.id); }); ``` 在以上代码中,我们通过app.get()方法定义了一个get类型的接口,访问路径为/user/:id,其中:id表示动态参数,可以在路由处理函数中获取到。当请求该接口时,服务器会返回'user:' + id的字符串。 三、删除接口: 删除接口也是类似的,我们可以使用app.delete()或app.post()等方法来定义接口的类型和访问路径: ``` app.delete('/user/:id', function(req, res){ res.send('delete user:' + req.params.id); }); ``` 在以上代码中,我们通过app.delete()方法定义了一个delete类型的接口,访问路径为/user/:id,同样返回'delete user:' + id的字符串。 四、修改接口: 修改接口可以使用app.put()或app.patch()等方法的方式来定义。例如,我们可以如下来实现一个修改接口: ``` app.put('/user', function(req, res){ res.send('updated user:' + req.body.name); }); ``` 在以上代码中,我们通过app.put()方法定义了一个put类型的接口,访问路径为/user,其中用户数据通过req.body.name的方式传输。当请求该接口时,服务器会返回'updated user:' + name的字符串。 五、查询接口: 查询接口一般通过app.get()或app.post()等方法来定义。例如,我们可以如下来实现一个查询接口: ``` app.post('/user', function(req, res){ res.json(req.body); }); ``` 在以上代码中,我们通过app.post()方法定义了一个post类型的接口,访问路径为/user。当请求该接口时,服务器会返回请求数据的json格式。 以上便是Node.js接口增删改查的简单实现方式,当然在实际应用中还需要根据具体的需求对接口进行参数验证、权限控制、异常处理等处理。同时,我们还需要注意接口的安全性和性能问题,提高用户体验和应用程序的可维护性。 ### 回答3: Node.js可以通过编写接口实现增删改查操作,这些操作可以对应着数据库的CRUD操作(Create、Read、Update、Delete)。接下来,我们将对每种操作进行详细介绍。 增加操作 要在Node.js实现增加操作,需要首先连接到相应的数据库。然后,使用Node.js提供的编程语言(如JavaScript)来编写增加数据的逻辑。通常,这涉及到将表单数据收集并存储到相应的数据库表中。例如,下面的代码可以实现将数据插入到一个名为“users”的数据库表中: ``` const mysql = require('mysql'); const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'yourpassword', database: 'yourdatabase' }); connection.connect(); let user = { name: 'Bob', email: '[email protected]' }; let query = connection.query('INSERT INTO users SET ?', user, function (error, results, fields) { if (error) throw error; console.log(results); }); connection.end(); ``` 在这个例子中,我们使用了MySQL数据库进行演示。我们定义了一个名为“users”的表,并将其连接到我们的Node.js应用程序中。我们使用JavaScript对象表示要插入的数据。该对象有两个属性(name和email),这些属性对应于“users”表中的列。最后,我们可以将该对象插入到表中,并使用console.log()函数输出结果。 删除操作 在Node.js实现删除操作,也需要连接到相应的数据库,然后使用编程语言来编写删除数据的逻辑。这通常涉及到从数据库表中获取要删除的数据,并将其从表中删除。例如,下面的代码可以实现将名为“Bob”的用户从“users”数据库表中删除: ``` const mysql = require('mysql'); const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'yourpassword', database: 'yourdatabase' }); connection.connect(); var id = 1; let query = connection.query('DELETE FROM users WHERE id = ?', [id], function (error, results, fields) { if (error) throw error; console.log(results); }); connection.end(); ``` 在这个例子中,我们使用了MySQL数据库进行演示。我们将身份证号为1的用户从表users中删除。这个过程只需要调用一个名为“DELETE”的关键字就可以够助力完成了。 更新操作 在Node.js实现更新操作,同样需要连接到相应的数据库。然后,我们可以使用编程语言(如JavaScript)来编写更新数据的逻辑。通常,这涉及到选择要更新的数据,并将其替换为新的值。例如,下面的代码可以实现将名为“Bob”的用户电子邮件地址从“[email protected]”更新为“[email protected]”: ``` const mysql = require('mysql'); const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'yourpassword', database: 'yourdatabase' }); connection.connect(); var id = 1; let query = connection.query('UPDATE users SET email = ? WHERE id = ?', ['[email protected]', id], function (error, results, fields) { if (error) throw error; console.log(results); }); connection.end(); ``` 在这个例子中,我们使用了MySQL数据库进行演示。我们将身份证号为1的用户的email地址从“[email protected]”更新为“[email protected]”。在这个过程中,我们将使用“UPDATE”关键字来实现。 查询操作 在Node.js实现查询操作,同样需要连接到相应的数据库。然后,我们可以使用编程语言(如JavaScript)来编写查询数据的逻辑。通常,这涉及到选择要查询的数据,并将其返回给应用程序。例如,下面的代码可以实现从名为“users”的数据库表中查询所有数据: ``` const mysql = require('mysql'); const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'yourpassword', database: 'yourdatabase' }); connection.connect(); let query = connection.query('SELECT * FROM users', function (error, results, fields) { if (error) throw error; console.log(results); }); connection.end(); ``` 在这个例子中,我们使用了MySQL数据库进行演示。我们使用“SELECT”关键字从名为“users”的表中选择所有数据,并输出它们。输出的数据将以一个对象数组的形式给出,每个对象代表一个行,并包含由该行的列名作为属性并对应着具体的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值