Skip to content

NodeJs 实现小程序历史数据接口

两种 HTTP 请求方法:GET 和 POST 介绍

点击查看 GET 和 POST 请求方法介绍

在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。

  • GET- 从指定的资源请求数据。
  • POST- 向指定的资源提交要被处理的数据。

GET 提交参数一般显示在 URL 上,POST 通过表单提交不会显示在 URL 上,POST 更具隐蔽性

思路和获取接口参数

从前端传参获取需要的数据 -> 再拼接 SQL 语句来执行 → 再返回结果给前端

获取 get 请求的参数 let { 参数名 , 参数名 } = req.query

获取 post 请求的参数 let { 参数名 , 参数名 } = req.body;

这里的参数名一定要传过来 不然获取的值将是 undefined

数据记录增删改查路由实现

增加数据记录接口

js
/* 新增 */
router.post("/api/add_record", function (req, res, next) {
  // 从请求体中获取 sensor_name 和 sensor_value 的值
  let { sensor_name, sensor_value } = req.body;
  // 拼接 sql 语句
  let sqlStr = `INSERT INTO esp32_data (sensor_name,sensor_value) VALUES ('${sensor_name}', ${sensor_value});`;
  // 在控制台打印需要执行的 sql 语句
  console.log(sqlStr);
  // 执行sql语句 通过connection.query方法
  connection.query(sqlStr, (err, result, fields) => {
    if (!err) {
      // 如果没有错误,返回添加成功的信息
      res.json({ code: 200, msg: "添加成功" });
      return;
    }
    // 如果有错误,返回添加失败的信息
    res.json({ code: 404, msg: "添加失败" });
  });
});

删除数据记录接口

js
/* 删除 */
router.post("/api/del_record", function (req, res, next) {
  let { id } = req.body;
  let sqlStr = `DELETE FROM esp32_data WHERE id = ${id}`;
  console.log(sqlStr);
  connection.query(sqlStr, (err, result, fields) => {
    if (!err) {
      res.json({ code: 200, msg: "删除成功" });
      return;
    }
    res.json({ code: 404, msg: "删除失败" });
  });
});

修改数据记录接口

js
/* 修改 */
router.post("/api/update_record", function (req, res, next) {
  let { id, sensor_value } = req.body;
  let sqlStr = `UPDATE esp32_data SET sensor_value = ${sensor_value} WHERE id = ${id};`;
  console.log(sqlStr);
  connection.query(sqlStr, (err, result, fields) => {
    if (!err) {
      res.json({ code: 200, msg: "修改成功" });
      return;
    }
    res.json({ code: 404, msg: "修改失败" });
  });
});

查询数据记录接口

js
/* 查询 */
router.get("/api/get_records", function (req, res, next) {
  let { sensor_name, create_time } = req.query;
  let sqlStr = `SELECT * FROM esp32_data WHERE sensor_name = '${sensor_name}' AND DATE(create_time) = '${create_time}'`;
  console.log(sqlStr);
  // http://localhost:3000/api/get_records?sensor_name=SMOKE&create_time=2024-02-28
  connection.query(sqlStr, (err, result, fields) => {
    if (!err) {
      console.log("查询结果:" + result.length + "条");
      // 对查询结果进行处理
      let resultData = result.map(item => {
        return {
          ...item,
          create_time: handleData(item.create_time), // 调用工具函数处理时间
          update_time: handleData(item.update_time),
        };
      });

      res.json({ code: 200, msg: "查询成功", data: resultData });
      return;
    }
    res.json({ code: 404, msg: "查询失败" });
  });
});

powered by 天人之际工作室