[记录二]Vue+node+koa2+mysql+nginx+redis,全栈开发小程序和管理员管理系统项目——编写接口路由

前言

写这个项目需要用到很多的依赖,node导入依赖也很方便,直接:

let mysql=require('mysql')

以下是我做这个项目使用到的依赖:
[记录二]Vue+node+koa2+mysql+nginx+redis,全栈开发小程序和管理员管理系统项目——编写接口路由_第1张图片
后面都会一一来使用和介绍。

编写接口

编写接口之前需要配置数据库和写一个处理sql语句的方法。
在controllers文件夹下新建defaultConfig.js和mysqlConfig.js。

//defaultConfig.js
const config = {
     
  // 数据库配置
  database: {
     
      DATABASE: '****', //你新建的数据库名称
      USERNAME: 'root', //mysql用户名
      PASSWORD: '******', //mysql密码
      PORT: '3306', //mysql端口号,m默认3306
      HOST: '127.0.0.1' //本地服务器ip
  }
}
module.exports = config
//mysqlConfig.js
let mysql = require('mysql')
let config = require('./defaultConfig')
let pool = mysql.createPool({
     
    host: config.database.HOST,
    user: config.database.USERNAME,
    password: config.database.PASSWORD,
    database: config.database.DATABASE
})
let allServices = {
     
    query: function (sql, values) {
     
        return new Promise((resolve, reject) => {
     
            pool.getConnection(function (err, connection) {
     
                if (err) {
     
                    console.log('数据库链接失败')
                    reject(err)
                } else {
     
                    connection.query(sql, values, (err, rows) => {
     
                        if (err) {
     
                            reject(err)
                        } else {
     
                            resolve(rows)
                        }
                        connection.release()
                    })
                }
            })
        })
    }
}
module.exports = allServices

配置router

我们在routes文件夹下新建一个index.js文件,用来导入同级目录下的所有.js路由文件并导出。

//index.js
const router = require('koa-router')()
const compose = require('koa-compose')
const glob = require('glob')
const {
      resolve } = require('path')

registerRouter = () => {
     
  let routers = [];
  glob.sync(resolve(__dirname, './', '**/*.js'))
      .filter(value => (value.indexOf('index.js') === -1))
      .map(router => {
     
          routers.push(require(router).routes())
          routers.push(require(router).allowedMethods())
      })
  return compose(routers)
}
module.exports = registerRouter

配置app.js

//app.js
const Koa = require('koa')
const app = new Koa()
const registerRouter = require('./routes/index')//导入routes导出的文件

app.use(registerRouter())

routes下创建js路由文件

新建一个users.js文件

//users.js
const router = require('koa-router')()
const api = require('../controllers/api')

router.prefix('/users')
//获取所有用户
router.get('/你的路由名字', async (ctx, next) => {
     
  const query = ctx.request.query   //get的请求从这里获取参数
  if (!query.phone&&query.phone!='' || !query.nickName&&query.nickName!='' || !query.gender&&query.gender!='') {
      
    return ctx.body = {
     
      code: 400,
      status: 200,
      message: '错误请求,请传必要的参数'
    }
  }
  let params = {
     }
  params.phone=query['phone']
  params.nickName=query['nickName']
  params.gender=query['gender']
  const pageIndex=ctx.request.query.pageIndex||1
  const pageSize=ctx.request.query.pageSize||10
  let result = await api.findUserData(params)
  let list = result.slice((pageIndex - 1) * pageSize, pageIndex * pageSize)
  let obj = {
     }
  obj.list = list
  obj.total = result.length
  obj.pageIndex=pageIndex
  ctx.body = {
     
    code: 200,
    data: obj,
    message: '获取用户数据成功'
  }
})
//增加用户
router.post('/你的路由名字', async (ctx, next) => {
     
  const body = ctx.request.body  //post的请求从这获取前端传的数据
  let params = {
     }
  params.nickname =body['nickname']
  params.avatarUrl = body['avatarUrl']
  params.gender = body['gender']
  let result = await api.addWxUser(params)
  if (result.affectedRows) {
     //更新成功
    ctx.body = {
     
      code: 200,
      status: 200,
      message: '添加成功'
    }
  } else {
      
    ctx.body = {
     
      code: result.code,
      status: result.status,
      message:result.message
    }
  }
})

//最后将路由导出
module.exports = router

在controllers文件夹下新建api.js文件

//api.js
const allServices = require('./mysqlConfig')//导入处理sql的方法

let api = {
     
  //获取小程序用户列表
  findUserData: function (params) {
     
    ***写你的sql语句****
    //执行你的sql语句并return出去
    return allServices.query(_sql)
  },
  // 添加用户
  addWxUser:async (params) => {
     
    ***写你的sql语句****
    //执行你的sql语句并return出去
     return allServices.query(_sql)
   }
}

//导出供路由文件使用
module.exports = api

然后其他接口也是如此。

测试接口

我这里使用postman来测试接口
[记录二]Vue+node+koa2+mysql+nginx+redis,全栈开发小程序和管理员管理系统项目——编写接口路由_第2张图片
调用的时候在服务端会出现如下:
[记录二]Vue+node+koa2+mysql+nginx+redis,全栈开发小程序和管理员管理系统项目——编写接口路由_第3张图片

以上就是本次写接口的内容了。

上一篇:前期准备
下一篇:token校验登录态

你可能感兴趣的:(连续剧,redis,mysql,node.js,vue.js,macos)