【node】node使用express框架编写api接口-03

1.创建main.js项目入口文件

https://blog.csdn.net/qq_36977923/article/details/122531905

2.创建路由

在这里插入图片描述

home的路由文件

//引入express框架
const express = require("express");
//引入home的控制器
const home = require("../../controller/home/home")
//引入中间件
const homeMiddle = require('../../middleware/homeMiddle');

//创建路由
let homeApp = express.Router()

//判断当天是否预约
homeApp.post('/test',[homeMiddle.auth],home.test)

//导出该模块
module.exports = homeApp;

home的控制器文件

const apiError = require('../../utils/apiError');
const responseJson = require('../../utils/responseJson');
const homeService = require('../../service/home/home/ho
//判断当天是否预约
test= async(req,res,next)=>{
  //特别注意,这里请求获取的是post请求才会使用req.body来获取数据
  let {uid} = req.body;
  //如果是get请求需要改成这样子
  //let {uid} = req.query;
  if(uid){
  //把值传给home服务层进行处理
    await (new homeService()).dealUid(uid).then(async result=>{
      if(result){
      	let {num,status,id} = result;
        await res.send(responseJson.otherJson({data:{num,status,id}}));
      }else {//返回数据
        await res.send(responseJson.errorJson(apiError.EDIT_FAIL))
      }
    })
  }else{
    res.send(responseJson.errorJson(apiError.PARAMS_MISSION))
  }
}
//模块导出
module.exports={
  test
}

home的服务层文件

const Home = require('../../../model/home/home/index')

class homeService{
  async dealUid(uid){
  	//把uid传入model模型,与数据库对接处理
    return await Home.dealUid(uid).then(async response=>{
      if(response.length <= 0){
        return false;
      }else{
        return {num:response[0]['num'],status:response[0]['status'],id:response[0]['id']}
      }
    })
  }
}

module.exports = homeService

home的model模型文件

const model = require('../../index');
const utilsTool = require('../../../utils/utils');
class Index extends model{

  static dealUid(uid){
    return new Promise((resolve,reject)=>{
      let startTime = utilsTool.curStartTime()/1000;
      let endTime = utilsTool.curEndTime()/1000;
      let sql = `SELECT num,status,id FROM g_reservation WHERE user_id=? AND status=1 AND reservation_time > ${startTime} AND reservation_time < ${endTime}`;
      this.query(sql,[uid]).then(res=>{
        resolve(res);
      }).catch(err=>{
        console.log(`错误信息:${err.message}`);
        reject(err);
      })
    })
  }
}
module.exports = Index;

model.js 数据模型文件

const mysql = require("mysql"),
  config = require("../utils/config")

class Model{
  //连接对象静态属性--静态属性是与类创建同时生成的和同时销毁
  static conn = null;
  constructor() {
  }
  //链接数据库静态方法
  static connection(){
    let host = config.baseConfig.host;
    let user = config.baseConfig.user;
    let password = config.baseConfig.password;
    let database = config.baseConfig.database;
    Model.conn = mysql.createConnection({host,user,password,database})
    Model.conn.connect((err)=>{
      if(err){
        console.log(`数据库连接失败:${err.message}`);
      }
    })
    console.log(`数据库连接成功`);
  }
  //关闭链接
  static close(){
    if(Model.conn !=null){
      Model.conn.end()
    }
  }
  /**
   * 数据库的操作--开启事务
   * @param sql 执行的操作语句
   * @param params 给sql语句的占位符进行赋值的参数数组
   * @returns {Promise<unknown>}
   */
  static query(sql,params=[]){
    return new Promise((resolve,reject)=>{
      this.connection();
      //开启事务
      Model.conn.beginTransaction( err => {
        if(err) {
          resolve('开启事务失败')
        } else {
          Model.conn.query(sql,params,(err,res)=>{
            if(err){
              return Model.conn.rollback(() => {
                console.log('操作数据失败,进行回滚')
                reject(err)
              })
            }else{
              Model.conn.commit((error) => {
                if(error) {
                  console.log('事务提交失败',error)
                  reject(error)
                }else{
                  resolve(res)
                }
              })
              // Model.close();//释放连接
            }
          })
        }
      })
    })
  }
}
module.exports = Model;

最后请求的api路径为,这里的api是main.js那里设置,需要看我另外一篇创建main.js的文章:https://blog.csdn.net/qq_36977923/article/details/122531905
localhost:3000/api/test
在这里插入图片描述

node创建项目目录结构请看另外一篇文章
https://blog.csdn.net/qq_36977923/article/details/122826720?spm=1001.2014.3001.5501

欢迎加入前端全栈开发交流圈一起吹水聊天学习交流qq群:837051545

个人网站:沉默博客
如有错误,请多多指教。
如对你有帮助,给个赞吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉默小管

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值