当前位置: 代码迷 >> 综合 >> [记录二]Vue+node+koa2+mysql+nginx+redis,全栈开发小程序和管理员管理系统项目——编写接口路由
  详细解决方案

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

热度:12   发布时间:2024-02-23 13:47:11.0

前言

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

let mysql=require('mysql')

   

    以下是我做这个项目使用到的依赖:
    在这里插入图片描述
    后面都会一一来使用和介绍。

    编写接口

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

    //defaultConfig.js
    const config = {
         // 数据库配置database: {
         DATABASE: '****', //你新建的数据库名称USERNAME: 'root', //mysql用户名PASSWORD: '******', //mysql密码PORT: '3306', //mysql端口号,m默认3306HOST: '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来测试接口
    在这里插入图片描述
    调用的时候在服务端会出现如下:
    在这里插入图片描述

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

      相关解决方案