前言
写这个项目需要用到很多的依赖,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来测试接口
调用的时候在服务端会出现如下:
以上就是本次写接口的内容了。