koa使用和API实现
前言
工具
后端开发过程
# 全局安装koa npm i koa -g # 全局安装koa2项目生成器 npm i koa-generator -g # 创建项目 koa2 koaDemo # 安装依赖 cd ./koaDemo && npm i# 安装sequelize, mysql, mysql2 npm i sequelize mysql mysql2 --save # 解决跨域 npm i koa-cors --save # app.js加入koa-cors的引用 const cors = require('koa-cors') app.use(cors())const Sequelize = require('sequelize') const user = {dbName: 'koa', dbUserName: 'koa', password: 'koa'} const sequelize = new Sequelize(user.dbName, user.dbUserName, user.password, { host: 'localhost', dialect: 'mysql', operatorsAliases: false, dialectOptions: { // 字符集 charset: 'utf8mb4', collate: 'utf8mb4_unicode_ci', supportBigNumbers: true, bigNumberStrings: true }, pool: { max: 5, min: 0, acquire: 30000, idle: 10000 }, timezone: '+8:00' // 东八区 }); module.exports = {sequelize}const moment = require('moment') module.exports = function(sequelize, DataTypes) { return sequelize.define('forward', { name: { type: DataTypes.STRING, allowNull: false, field:'name' }, id: { type: DataTypes.INTEGER, allowNull: false, field: 'id' }, price: { type: DataTypes.INTEGER, allowNull: false, field: 'price' }, deposit: { type: DataTypes.INTEGER, allowNull: false, field: 'deposit' }, uuid: { type: DataTypes.INTEGER, primaryKey: true, allowNull: true, autoIncrement: true } }, { freezeTableName: true }) }// 引入mysql配置文件 const db = require('../config/db') const Sequelize = db.sequelize // 引入数据表模型 const ForWard = Sequelize.import('../schema/forward') ForWard.sync({force: false}) // 自动创建表 class ForWardModel { /** * 创建合约模型 * @param data * @returns {Promise<*>} */ static async createForWard(data) { return await ForWard.create({ name: data.name, id: data.id, price: data.price, deposit: data.deposit }) } /** * 查询合约列表 * @param id 文章id * @returns {Promise<Model} */ static async getForWardList(id) { return await ForWard.findOne({ where: { id } }) } } module.exports = ForWardModelconst ForWardModel = require('../modules/forward') class forWardController { /** * 创建合约 * @param ctx * @returns {Promise.<void>} */ static async create(ctx) { // 接受客户端 let req = ctx.request.body if(req.name && req.id && req.price && req.deposit) { try { // 创建合约模型 const ret = await ForWardModel.createForWard(req) // 使用刚刚创建的id查询合约列表,且返回合约信息 const data = await ForWardModel.getForWardList(ret.id) ctx.response.status = 200 ctx.body = { code: 200, msg: '创建合约成功', data } } catch(err) { ctx.response.status = 412 ctx.body = { code: 412, msg: '创建合约失败', data: err } } } else { ctx.response.status = 416 ctx.body = { code: 200, msg: '参数不全' } } } /** * 获取合约详情 * @param ctx * @returns {Promise.<void>} */ static async detail(ctx) { let id = ctx.params.id if (id) { try { // 查询合约详情模型 let data = await ForWardModel.getForWardList(id) ctx.response.status = 200 ctx.body = { code: 200, msg: '查询成功', data } } catch (err) { ctx.response.status = 412 ctx.body = { code: 412, msg: '查询失败', data: err } } } else { ctx.response.status = 416 ctx.body = { code: 416, msg: '合约id必须要传' } } } } module.exports = forWardControllerconst ForWardController = require('../controllers/forward') // 创建合约 router.post('/forward/create', ForWardController.create) // 获取合约详情 router.get('/forward/:id', ForWardController.detail)npm start
前端开发过程
思考
参考
Last updated
Was this helpful?