菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
70
0

学习 nodejs+mongodb+koa2 写接口(二) koa2教程入门

原创
05/13 14:22
阅读数 859

一.hello koa

安装koa2

# 初始化package.json
npm init

# 安装koa2 
npm install koa

hello world 代码

const Koa = require('koa')
const app = new Koa()

app.use( async ( ctx ) => {
  ctx.body = 'hello koa2'
})

app.listen(3000)
console.log('[demo] start-quick is starting at port 3000')

启动demo

由于koa2是基于async/await操作中间件,目前node.js 7.x的harmony模式下才能使用,所以启动的时的脚本如下:

node index.js

272{NMV63(DOI%8HQR5)`UU.png

二.koa2 原生路由实现 和 get请求

router.js代码如下:

//index.js
const Koa = require('koa')  
const app = new Koa()  
  
const router = require('./routes/router')();  
app.use(router.routes()).use(router.allowedMethods())  
  
  
app.listen(3000, () => {  
  console.log('\[demo\] route-use-middleware is starting at port 3000')  
})

router.js代码如下:

const Router = require('koa-router')  
  
const home = require('./home')();  
const page = require('./page')();  
const api = require('./api')();  
  
module.exports \= () => {  
  // 装载所有子路由  
  let router = new Router()  
  router.use('/', home.routes(), home.allowedMethods())  
  router.use('/page', page.routes(), page.allowedMethods())  
  router.use('/api', api.routes(), api.allowedMethods())  
  return router;  
}

home.js代码如下:

const Router = require('koa-router')  
  
module.exports = () => {  
  
  let home = new Router()  
  // 子路由1  
  home.get('/', async ( ctx )=>{  
    let html = `  
 <ul> <li><a href="/page/helloworld">/page/helloworld</a></li> <li><a href="/page/404">/page/404</a></li><li><a href="/api/settings">/api/settings</a></li> </ul> `  ctx.body = html  
  })  
  
  return home;  
}

page.js代码如下:

const Router = require('koa-router')  
module.exports = () => {  
  let page = new Router()  
  page.get('/404', async ( ctx )=>{  
    ctx.body = '404 page!'  
  })  
  page.get('helloworld', async ( ctx )=>{  
    ctx.body = 'helloworld page!'  
  })  
  
  return page;  
}

api.js代码如下:

const Router = require('koa-router')  
  
const setController = require('../controllers/setController');  
  
  
module.exports = () => {  
  const api = new Router()      
  api.get('/settings',setController.getSettings)   
  
  return api;  
}

setController.js代码如下:

'use strict';  
  
const crypto = require('crypto');  
  
const AES_SECRET = '12e87e58475793133d5bb40c3ae76ca3';  
const AES_IV = 'udv93xitfeu6xg8q';  
  
const TAOBAO_SECRET_KEY = 'd34682618b6503641566ae83d971d35d';  
  
exports.getSettings = async (ctx, next) => {  
  
  let cipher = crypto.createCipheriv('aes-256-cbc', Buffer.from(AES_SECRET), Buffer.from(AES_IV));  
  let encrypted = cipher.update(TAOBAO_SECRET_KEY);  
  
  encrypted = Buffer.concat([encrypted, cipher.final()]);  
  
  ctx.status = 200;  
  ctx.body = {  
    success: true,  
  msg: '',  
  settings: {  
      app_key: '27985254',  
  secret: encrypted.toString('hex'),  
  api:[  
        {  
          method: 'taobao.tbk.dg.material.optional',  
  adzone_id: 'mm_124732562_33032153_109589700162',  
  desc: '物料搜索'  
  },  
  {  
          method: 'taobao.tbk.dg.optimus.material',  
  adzone_id: 'mm_124732562_33032153_109589750184',  
  desc: '物料精选'  
  }  
      ]  
    }  
  };  
  return;  
}

输入指令 node index.js

ZIHR8YU_R[F7BUZLIT2~QIC.pngO59WSKF0[02}H935Q265PMW.png5%0)Z`{ZNJZ0[N1RUHC3LQJ.png

发表评论

0/200
70 点赞
0 评论
收藏