koa2-实现API
前言
之前我们已经介绍了如何实现数据库及其查询,现在是关键部分,如何实现API:
步骤
-
模型应用、使用
之前我们已经把数据库的表table建立好了,接下来我们要在实例模型中引入:
const db = require('../config/db'); const Sequelize = require('sequelize'); const sequelize = db.sequelize; const Op = Sequelize.Op; const User = sequelize.import('../table/user'); const Team = sequelize.import('../table/team'); const Teamlabel = sequelize.import('../table/teamlabel'); const Members = sequelize.import('../table/members'); const Pit = sequelize.import('../table/pit');
创建team的实例:
class TeamModel { // 创建小组 static async createTeam(data) { return await Team.create({ team_name : data.team_name, leader : data.leader, logo : data.logo, description : data.description, limit : data.limit, type: data.type }) } ... }
里面是对数据库操作的各种方法。
-
controller 控制器
控制器的主要作用为功能的处理,首先要在控制器中引入模型实例:
const TeamModel = require('../modules/teamModel'); const ToastModel = require('../modules/toastModel');
查询,删除等各种方法:
class TeamController {// 200 成功,412 异常, 212 组长不存在,211 部分成员不存在,401 cookie不正确重新登录,400 参数不齐全 static async createGroup(ctx) { let req = ctx.request.body; let cookie_user = await CookieController.getUsernameFromCtx(ctx); if (cookie_user === -2) { ctx.body = { code: 401, msg: 'cookie超时,请重新登录', data: null }; return; } } ... }
-
router路由
路由,也可以简单理解为路径,主要是作为请求的url,请求的路径来处理一些请求(例如各种post,get方法),返回数据。一般情况下,基于node的项目,路由都是在一个叫做routes的目录下面。路由里的api就有controller来实现:
同样是引入controller:
const router = require('koa-router')(); const TeamController = require('../controller/teamController'); const CookieController = require('../controller/CookieController');
设计API:
router.prefix('/api/v1/team'); router.post('/', TeamController.createGroup); router.put('/', TeamController.modifyGroup); ...
解决跨域
跨域是web开发中不可避免的一个必须要解决的问题了。跨域问题,主要是要解决服务器端的通信问题。在node的开发中,只需要实现一个CORS标准就可以了。
npm install koa-cors --save
然后在app.js加入koa-cors的引用:
const cors = require('koa-cors')
app.use(cors()) //使用cors