做毕设学了点东西系列
之前已经用antdpro做了前端,就直接把后端部分在前端目录下加了一个server文件夹,npm包也直接安装在了目录下,省去了很多步骤(偷懒了
koa中间件
先来学习一下koa的一些理论
koa的一个中间件是这样定义的
第一个参数是Koa Context,是所有的中间件和请求处理函数传递的内容,封装了request
和response
,可以通过ctx.request
和ctx.response
获取,常用属性如下:
第二个参数是next
函数,用来把控制权交给下一个中间件。与Express不同的是,这里的next
函数返回的是一个Promise,这个Promise完成后,就会去执行next
函数后面的内容,也就是将中间件的执行拆分为两个阶段(next
前面和next
后面)
文件结构
├── server
│ ├── config // 配置
│ ├── routes // 定义路由
│ ├── controllers // 逻辑处理
│ ├── service // 数据库接口方法
│ ├──models // 数据库表结构
│ ├──utils // 公用方法
│ └── app.js // 入口文件
…
安装依赖和初始化
- koa
- koa-router
- koa-json
- koa-bodyparser
- sequelize
- sequelize-auto
- mysql2
在app.js中:
此时运行node app.js
可以看到server在listen了
数据库配置
本地配置
使用本地mysql数据库,建库,建表
和数据库交互
使用了sequelize来实现ORM,安装相关的依赖后
1 首先在server目录下运行自动生成数据库表对应的对象
|
|
运行后会在models下生成所有数据库表对应的js文件和一个init-models.js
2 在config下新建数据库相关的配置
|
|
之后Gas就可以暴露出来在service层中调用数据库方法
3 在service层中对数据库表进行增删改查的操作
以一个user作为例子,在service下新增user.js文件
来写完一个接口吧
以上步骤实现了和数据库user表的交互并且定义了一个方法来根据id查询user,完成这个接口的话,首先在routes中分发这个接口,然后在指定的controller层的方法中处理并且调用service层的方法,返回需要的信息。下面倒着来实现这个过程。
controller
|
|
routes
|
|
在app.js中引入这个路径
|
|
验证这个接口
使用postman,get http://localhost:8889/user/user/1
查看返回的数据如下: