mpvue读书--个人中心03_搭建后端服务器并测试

在这里插入图片描述


使用到koa2 + mongoose


一、服务器文件目录结构

在这里插入图片描述
在这里插入图片描述

二、index.js搭建服务器

mysql不同,mongoose需要在搭建服务器时就连接数据库
以下为最简易的服务器创建单文件index.js实现服务器功能

在这里插入图片描述

1、工程化搭建koa服务器

  • index.js引入koa
const Koa = require('koa') // 引入koa类,注意要大写(是个类class)
const app = new Koa() // 实例化Koa

const bodyParser = require('koa-bodyparser') // 引入post请求解析
app.use(bodyParser())

app.listen(9000)
console.log('app start at port 9000...')
  • 配置路由
import routers from './routers'
routers(app)
  • index.js完整代码

在这里插入图片描述

三、router文件夹

在这里插入图片描述

1、index.js配置路由根路径

index.js 用于配置根路径

例如:127.0.0.0/user/getUserById
127.0.0.0/user/getUser
127.0.0.0/user/postUser
127.0.0.0/user/delectUser

都属于 user/…

还会有其他
goods/…
store/…
注意:路由配置根路径暴露出去的是一个方法
配置内部的子路由引入到这个方法里

(app) =>{
    router.use()
    app.use( router,routes() )  // koa实例使用路由中间件
}

在这里插入图片描述
注意:

  • 配置路由根路径要引入koa路由,配置具体路由路径同样也要引入koa路由
  • router.use() 后面接一个路由方法,而不是对象。下面是test具体路由的文件,注意暴露的内容

2、xxx.js配置路由具体路径

可以看到暴露的直接是router实例对象,在上面index.js引用这个具体路由就是使用router实例routes()方法
这里先测试路由路径是配置成功,试一下test的'/'路径

const Router = require('koa-router')
const router = Router()

// router模块定义接口方法,路径在主路径下续写
router.get('/', (ctx, next) => {
    const result = { // 创建响应返回的数据结构
        code: 200,
        ts: '测试路径'
    }
    ctx.response.body = result // 直接把响应写进页面
})

export default router
  • 测试,此时启动服务器
node index

命令行会输出

app start at port 9000...

打开浏览器,输入localhost:9000/test,可以看到json内容,则路径配置成功

具体路由路径可以i配置成功,就可以开始连接数据库了。

import test from '../controllers/testControllers'   // 数据库操作(自己创建的类class)

router.get('/getTest', test.getTest)    // 访问路径是localhost:9000/test/getTest
router.post('/postTest', test.createTest)   // 注意这些路径不要写成 router.post('/test/postTest', test.createTest)

路径写错会出现这种情况
在这里插入图片描述
这代表着路径无效

四、数据库

在这里插入图片描述

  • 引入数据库(连接数据库)
  • 引入数据库(设置数据库表格)
  • 创建类
  • 设置类的方法(操作数据库)

1、controllers引入数据库(连接数据库)

这里可以称作控制层
引入数据库连接的文件, 暴露的是数据库的model
也就是引入model必定会执行一次连接数据库

import testModel from '../mongoose/dbConnect' // 引入控制数据库的方法

2、model连接数据库

在这里插入图片描述

连接数据库,不暴露出去,则引用这个文件的地方都会执行一次连接数据库

import mongoose from 'mongoose'
// 连接数据库
mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true })
const db = mongoose.connection
// 错误处理
db.on('error', console.error.bind(console, 'connection error:'))
db.once('open', function () {
    console.log('db success')
})
  • 完整代码:
    在这里插入图片描述

3、创建数据库(设置数据库表格)

在这里插入图片描述

import mongoose from 'mongoose'

const TestSchema = mongoose.Schema({
    // 设置表格表头
    content: String // 文本
})
// 创建/连接数据库表格
const TestModel = mongoose.model('test', TestSchema)

module.exports = TestModel

4、controller创建类

在这里插入图片描述

class TestController {
    constructor () {
    }
    // 类方法,操作数据库
    ...
 }

5、设置类的方法(操作数据库)

get对应查找数据库,用到koactx.body写入返回内容
用浏览器打开这个路由路径,就能执行这个查找数据库并返回数据
localhost:9000/test/getTest

重点:接口接收参数

  • get const {bookId} = ctx.params
  • post const {openid} = ctx.request.body
  • get
async getTest (ctx) {
    try {
        let data = await TestModel.find()
        ctx.body = {
            code: 0,
            data: data
        }
    } catch (err) {
        ctx.throw(err)
    }
}
  • post
async createTest (ctx, next) {
    const {text} = ctx.request.body
    try {
        if (text) {
            // 创建文章
            const data = await TestModel.create({
            content: text
        })
        if (data) {
            ctx.body = {
                code: 0,
                data: data
            }
        }
        } else {
            ctx.body = {
                code: 1,
                data: '没有传入text'
            }
        }
     } catch (err) {
        ctx.throw(err)
     }
}

这里注意post不要在浏览器测试,localhost:9000/test/post/Test
在浏览器是NOT FOUND
我他妈怕是个脑残吧,post的请求在浏览器不能直接打开啊。只能用postman或者前端请求

五、结论

上面搭建服务器的过程已经是一边编写一边测试
根路由测试了,具体的子路由也测试了
在浏览器可以直接测试get请求
post请求要到postman上进行测试,并且跑通了
接下来就是前端能正常请求到接口,并根据需求完成接口逻辑


项目参考:慕课网
万事不顺,查文档
mpvue五分钟教程
vue官方文档

如有建议和疑问可联系
QQ:1017386624
邮箱:1017386624@qq.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值