[レコード2] Vue + node + koa2 + mysql + nginx + redis、小規模プログラムのフルスタック開発、および管理者管理システムプロジェクト作成インターフェースルーティング

序文

このプロジェクトを作成するには多くの依存関係が必要です。依存関係をインポートするノードも直接、非常に便利です。

let mysql=require('mysql')

このプロジェクトで使用した依存関係は次のとおり
ここに画像の説明を挿入
です。後で使用し、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

ルーターの構成

ルートフォルダに新しい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())

ルートの下に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

その後、他のインターフェイスは同じです。

テストインターフェース

私が使う郵便屋さんインターフェースをテストするために
ここに画像の説明を挿入
、呼び出し時に以下がサーバーに表示されます。
ここに画像の説明を挿入

上記は、この書き込みインターフェースの内容です。

前:予備的な準備
次:トークン検証ログインステータス

おすすめ

転載: blog.csdn.net/Smell_rookie/article/details/108626871
おすすめ