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

一.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

Image placeholder
feel
未设置
  70人点赞

没有讨论,发表一下自己的看法吧

推荐文章
学习 nodejs+mongodb+koa2 写接口(一) 环境布置

一.环境准备最近在学用Nodejs写后端接口,了解到koa2是Nodejs的一个框架。可以快速开发后端接口,同时也能更快熟悉Nodejs以下是所需的环境node  v7.6+,可以用nvm或者n安装指

nodejs调用外部接口

前言在日让的工作开发中,我们不仅仅要使用node来封装提供一些http接口,也会在node服务中调用一些第三方的HTTP接口,那么如何操作?request安装依赖npminstallrequest-S

nodejs为什么叫node?

nodejs为什么叫node?最开始NodeJs作者Dahl取的名字叫web.js,仅仅是一个web服务器,是Apache和其他“阻塞”服务器的替代方案。但是该项目很快就超出了他最初的Web服务器库的

Nebula 架构剖析系列(二)图数据库的查询引擎设计

摘要上文(存储篇)说到数据库重要的两部分为存储和计算,本篇内容为你解读图数据库Nebula在查询引擎QueryEngine方面的设计实践。在Nebula中,QueryEngine是用来处理Nebula

《MongoDB高手课》学习记录(第十六天)

第十六天今天开始事务的学习,要学习的章节为《19|事务开发:写操作事务》,其实主要就是讲一个参数writeConcern。什么是writeConcern?之前第一章我们学过,生产环境中MongoDB最

《MongoDB高手课》学习记录(第十七天)

写在前面最近有新项目上线,实在太忙了,学习的进度有点拖沓,但会坚持。第十七天今天要学的是《20|事务开发:读操作事务之一》章节。主要讲解的是怎么哪里读取数据的问题。readRreference参数值有

怎么查看nodejs是否安装?

查看nodejs是否安装的方法:1、cmd执行命令开始菜单搜索框输入cmd,点击第一个结果,打开cmd命令行。在cmd命令行中,输入node-v并执行,显示node版本,证明安装成功。例如我的版本是1

如何查看nodejs版本号?

在windows上查看nodejs的版本号想要在电脑上查node版本号,可以打开cmd命令行,使用命令来查看。1、在开始菜单的搜索框中输入cmd,点击cmd.exe打开cmd命令窗口。2、使用命令查看

nodejs都能做什么?

Node对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。V8引擎执行Javascript的速度非常快,性能非常好。Node是一个基于ChromeJavaScript运行时

nodejs怎么解析less?

nodejs怎么解析less?在cmd中使用npm中的less模块来解析less。npm(全称NodePackageManager,即“node包管理器”)是以JavaScript编写的软件包管理系统

nodejs怎么运行项目?

nodejs怎么运行项目?想要运行nodeJS项目,只需要安装好node的环境就可以了,不需要其他的配置。使用cmd命令,打开window窗口,输入node-v,如果运行的结果是nodeJS的一个版本

深入了解Nodejs Buffer的使用

JavaScript起初为浏览器而设计,没有读取或操作二进制数据流的机制。Buffer类的引入,则让NodeJS拥有操作文件流或网络二进制流的能力。Buffer基本概念Buffer对象的内存分配不是在

MongoDB初学者最常用的10个命令

1.登录mongodb 以下命令可以用于登录mongodb数据库,但是需要保证用户你声明的数据库中存在对应的用户和密码 mongo--host--port-u-p--authenticationDat

0x01 MongoDB 练习手札

最近看Node.js相关的一些东西,跟着书上的教程实现了一个Express+MongoDB+Vue.js实验性项目,对于常年使用LNMP黄金搭档的我来说,不用写SQL语句真的是太爽了,也不用关心MyS

MongoDB与阿里云达成战略合作,云将是数据库最佳载体

摘要:开源数据库厂商与云服务供应商两大阵营之间存在争议是事实,MongoDB与阿里云达成战略合作,背后意味着什么?对MongoDB,对阿里云分别意味着什么?对整个数据库产业又意味着什么?MongoDB

MongoDB 存储引擎与内部原理

一、存储引擎(Storage)mongodb3.0默认存储引擎为MMAPV1,还有一个新引擎wiredTiger可选,或许可以提高一定的性能。mongodb中有多个databases,每个databa

从Oracle到MongoDB:为什么AWS不断抛弃合作伙伴?

亚马逊因不断与其商业伙伴分道扬镳而备受关注,在决定放弃Oracle数据库转而使用自己的服务之后,Amazon现在正在尝试用自己的“兼容”版本DocumentDB取代MongoDB。有趣的是,AWS宣布

MongoDB数据库因安全漏洞,导致Family Locator泄露二十多万名用户数据

摘要:本月第二次,未受保护的MongoDB数据库因大量安全漏洞而导致敏感信息泄露,受欢迎的家庭跟踪应用程序FamilyLocator已经暴露了超过238,000名用户的实时未加密位置数据。该应用程序非

中信银行信用卡业务数据库实现国产替换,湖北银行新核心系统项目正式验收,阿里云与MongoDB达成战略合作

中信银行信用卡业务数据库实现国产替换10月31日,由IT168旗下ChinaUnix社区主办的第十一届中国系统架构师大会(SACC2019)在北京召开。会上,中信银行软件开发中心/技术平台开发处副处长

了解 MongoDB 看这一篇就够了

作者:美码师一、简介MongoDB是一款流行的开源文档型数据库,从它的命名来看,确实是有一定野心的。MongoDB的原名一开始来自于英文单词”Humongous”,中文含义是指”庞大”,即命名者的意图

vuejs和jquery的区别是什么?

vuejs和jquery的区别1、jQuery首先要获取到dom对象,然后对dom对象进行进行值的修改等操作2、Vue是首先把值和js对象进行绑定,然后修改js对象的值,Vue框架就会自动把dom的值

Vuejs中的监察院"watch"

最近刚刚追完庆余年,心思还总是在剧情里,然后就觉得在vuejs里watch就是监察院,一个不折不扣的特务机构。在Vue中watch被称为监听者,它随时观察这vue实例中每一个数据的变化,当数据发生改变

【PHP学习】PHP入门学习 之 常量

PHP常量是一个简单值的标识符(名字)。如同其名称所暗示的,在脚本执行期间该值不能改变(除了所谓的魔术常量,它们其实不是常量)。PHP常量默认为大小写敏感。传统上常量标识符总是大写的。 PHP常量名

DBA职业发展之路:去“IOE”等挑战之下,DBA将何去何从?

开篇随着近些年来,开源、自动化、云化的兴起,DBA职业也正悄然发生一些变化。经常有朋友咨询我,职业发展规划;特别是近期Oracle的大幅裁员之后,针对DBA这一职业未来该如何发展?本文是个人对此问题的

数据偏移、分区陷阱……我们这样避开DynamoDB的5个坑

摘要:本文主要介绍作者所在团队在具体业务中所遇到的挑战,基于这些挑战为何最终选型使用AmazonDynamoDB,在实践中遇到了哪些问题以及又是如何解决的。文中不会详细讨论AmazonDynamoDB