node + express + axios 增删改查接口API

7 篇文章 0 订阅
6 篇文章 1 订阅

项目目录:

  • app.js ------ 主要代码如下:
  • src ------- 静态文件,json、html、image

app.js

// 引入express 包
const express = require("express");
// fs 文件操作内置模块
const fs = require("fs");
// path 文件目录路径内置模块
const path = require("path");
// 数据
const db = require("./src/mock/data.json");
// 实例化 express 给 app 实例对象
const app = express();

// 开放静态资源文件src
app.use(express.static("src"));

// post 数据转换
app.use(express.json());
app.use(express.urlencoded());

// 配置默认页
app.get("/", (req, res) => {
    // sendFile 接收 绝对路径。 __dirname :文件所在磁盘的路径(指向文件的绝对路径)
    res.sendFile(path.join(__dirname, "/src/index.html"));
})

// 接口位置 

// 登录
app.get("/login", (req, res) => {
    let off = db.some(item => {
        return item.name == req.query.name && item.pwd == req.query.pwd;
    })
    if (off) {
        res.send({ code: 0, msg: "登录成功" })
    } else {
        res.send({ code: 1, msg: "登录失败" })
    }
})

// 添加数据 (增)
app.post("/add", (req, res) => {
    // 根据前端传过来的下标删除对应的下标数据
    db.push(req.body);
    fs.writeFileSync("./src/mock/data.json",JSON.stringify(db));
    res.send({code:0,msg:"添加成功!"});
})

// 删除数据 (删)
app.get("/del", (req, res) => {
    // 根据前端传过来的下标删除对应的下标数据
    db.splice(req.query.uid, 1);
    fs.writeFileSync("./src/mock/data.json",JSON.stringify(db));
    res.send({code:0,msg:"删除成功!"});
})

// 修改数据 (改)
app.post("/updata", (req, res) => {
    // 根据前端传过来的下标删除对应的下标数据
    db.splice(req.body.uid,1,req.body);
    fs.writeFileSync("./src/mock/data.json",JSON.stringify(db));
    res.send({code:0,msg:"修改成功!"});
})

// 查询所有 (查)
app.get("/list", (req, res) => {
    // 把数据直接返回给前端
    res.send(db);
})

// 查询单个数据(查询详情)
app.get("/listOne", (req, res) => {
    // 根据前端传过来的下标查询当前的数据
    let data = db[req.query.uid];
    res.send(data);
})

// 模糊查询
app.post("/search", (req, res) => {
    // 根据前端传过来的下标删除对应的下标数据
    let data = db.filter(item=>{
        return item.name.includes(req.body.name); 
    })
    res.send(data);
})
// 分页
// 条数
let pagSize = 5;

// 总页数
let page = Math.ceil(db.length / pagSize);

// 页码 1 2 3 4 5 ...
let arr = [];

for (let index = 1; index <= page; index++) {
    arr.push(index); //1 2 3 4 5 ...
}

// 默认渲染第一页5条
app.get("/listPage", (req, res) => {
    // 第一次渲染的条数
    let start = db.slice(0,pagSize);
    // 给前端返回页码和默认条数
    res.send({arr,start});
})

// 分页
app.get("/nextPage", (req, res) => {
    // 当前页码 =(当前页码 - 1)* 条数
    let s = (req.query.id - 1) * pagSize;
    //  slice 截取当前页码对应的数据
    let data = db.slice(s,s + pagSize);
    // 返给前端
    res.send(data);
})

// 设置启动端口号
app.listen(8083, () => {
    console.log("8083启动");
})


项目结构:

– src (数据,页面静态资源 js css img json)

– app.js (配置文件 如上图)

启动

当前 app.js 同级 运行
node app.js (node-dev app.js)

前后端分离(Backend-Frontend Separation)是一种现代Web应用开发架构模式,它将前端(用户界面和交互部分)和后端(数据处理和业务逻辑部分)分开设计和实现。在这种模式下: **后端增删改查(CRUD)代码** 后端通常使用某种服务器端语言(如Node.js、Python(Flask/Django)、Java(Spring Boot)、Ruby(Rails)等)编写。CRUD操作是指创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)数据库中的数据。例如,在Node.js的Express框架中,增删改查的RESTful API可能如下: ```javascript // 创建资源 (POST /api/users) app.post('/api/users', async (req, res) => { const newUser = new User(req.body); // 新建User对象 await newUser.save(); // 将数据保存到数据库 res.status(201).json(newUser); }); // 读取资源 (GET /api/users/:id) app.get('/api/users/:id', getUserById, (req, res) => { res.json(res.user); }); // 更新资源 (PUT /api/users/:id) app.put('/api/users/:id', getUserById, async (req, res) => { res.user.update(req.body); await res.user.save(); res.json(res.user); }); // 删除资源 (DELETE /api/users/:id) app.delete('/api/users/:id', getUserById, async (req, res) => { await res.user.destroy(); res.status(204).send(); }); ``` 这里,`getUserById`是一个中间件,用于从数据库获取对应的用户数据。 **前端与后端通信** 前端使用HTTP请求(通常是Ajax、Fetch或axios等库)向后端API发送请求,获取数据、提交表单等操作。前端负责显示数据、处理用户输入,并根据后端返回的数据动态更新页面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值