mkdir app01
cd app01
npx express-generator
npm i
npm i mysql -S
npm i cors -S
cnpm i -S nodemon
npm run start
1 在app01下创建utils文件夹并创建pool.js文件和Response.js

Response.js的代码:
// 封装响应数据
class Response{
constructor(status,data,message){
this.status=status;
this.data=data;
this.message=message;
this.timesamp=new Date().getTime()
}
}
// 导出响应数据
module.exports=Response
pool.js的代码:
// 1.引入mysql模块
let mysql=require('mysql')
// 2.创建连接池对象
let pool=mysql.createPool({
host:'xx.xxx.xxx.xx', // 这里填入你的服务器地址就好了
database:'xxx', // 数据库名
user:'test1', //用户名
password:'test1', //密码
connectionLimit:10
});
// 3.将连接池导出
module.exports=pool;
2在routers文件夹下创建student.js文件

查询接口:
//3 编写学生接口
// 3.1引入express
let express=require('express');
// 3.1引入响应体
let Response=require('../utils/Response');
// 3.1引入连接池对象
let pool =require('../utils/pool');
const { query } = require('express');
// 3.2 创建路由单元
let router=express.Router();
//3.3 查询接口
router.get('/findAll',(req,res)=>{
pool.getConnection((err,connection)=>{
if(err) throw err;
let sql='select * from tbl_student';
connection.query(sql,(err,results)=>{
if(err) throw err;
res.json(new Response(200,results,'查询成功'))
});
// 释放连接对象
connection.release();
})
});
//3.4 导出
module.exports=router
删除接口
// 3.1引入express
let express=require('express');
// 3.1引入响应体
let Response=require('../utils/Response');
// 3.1引入连接池对象
let pool =require('../utils/pool');
const { query } = require('express');
// 3.2 创建路由单元
let router=express.Router();
// 3.3 删除接口
router.delete('/deleteById',(req,res)=>{
// query是一个对象可以将id解构出来
// let id=req.query.id等价于一下代码
let {id}=req.query;
pool.getConnection((err,connection)=>{
if(err) throw err;
// 根据id删除数据
let sql=`delete from tbl_student where id=${id}`;
connection.query(sql,(err,results)=>{
if(err) throw err;
res.json(new Response(200,null,'删除成功'))
});
connection.release()
})
});
//3.4 导出
module.exports=router
新增或修改接口
//3 编写学生接口
// 3.1引入express
let express=require('express');
// 3.1引入响应体
let Response=require('../utils/Response');
// 3.1引入连接池对象
let pool =require('../utils/pool');
const { query } = require('express');
// 3.2 创建路由单元
let router=express.Router();
// 3.3 新增或修改接口
router.post('/saveOrUpdata',(req,res)=>{
// 根据数据库的数据 将id name gender 解构出来
let {id,name,gender}=req.body;
pool.getConnection((err,connection)=>{
if(err) throw err;
let sql='';
// 需要判断id判断 id存在则为修改接口 id不存在则为新增接口
if(id){
// 修改
sql=`updata tbl_student set name='${name}'gender='${gender}' where id =${id}`;
}else{
// 新增
sql=`insert into tbl_student values(null,'${name}','${gender}') `;
}
// 执行sql操作
connection.query(sql,(err,results)=>{
if(err) throw err;
res.json(new Response(200,null,id?'修改成功':'新增成功'))
})
})
})
//3.4 导出
module.exports=router
4只需要在 app.js写两行代码
4.1引入学生路由和4.2使用学生路由 即可
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
//4.1 引入学生路由单元
let studentRouter=require('./routes/student')
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
// 4.2使用学生路由
app.use('/student',studentRouter)
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
测试一下:
在浏览器地址栏上输入localhost:3000/student/findAll
查询结果:

使用postman模拟前端删除请求

此时在查询全部数据id为5的 数据已经删除了
本文展示了如何使用Node.js的Express框架搭建RESTful API,包括创建数据库连接池、定义响应体类、实现学生管理的查询、删除和新增/修改接口。通过在app.js中引入和使用路由,完成API的部署。测试结果显示接口功能正常。
1693

被折叠的 条评论
为什么被折叠?



