koa-easywechat是一个基于koa2的微信公众号开发中间件
由于使用的是koa2,异步开发使用async/await的写法,所以请保证你的node版本>=7.6
npm install koa-easywechat -S
注意:koa-easywechat中间件要写在最前面,也就是要第一个use,因为我在ctx上挂载了一个wechat对象,这个对象实现了大部分的微信接口,这样才能保证开发者在自己的写路由里,获取到ctx.wechat进行自己的业务开发
var Koa=require("koa");
var WeChat=require("koa-easywechat");
var app=new Koa();
app.use(WeChat({
appID:"",
appsecret:"",
token:"",
isSafeModel:false,
encodingAESKey:""
},async function (next){
this.reply={
type:"text",
content:"回复一段文字吧"
}
}
}));
app.listen(3000,()=>{
console.log("server is running")
});
上面这段代码用于回复一段文字 。
WeChat(config , replyHandler):
replyHandler:是一个async函数,用于开发者自己实现自动回复业务逻辑
async replyHandler(next){
var message=this.message;
var wechat=this.wechat;
this.reply={
type:"text",
content:"回复一段文字吧"
}
}
如果没有回复的业务逻辑,可以调用next()将控制权交给之后的中间件处理
async replyHandler(next){
await next();
}
在这个函数里,this就是koa框架中的上下文(ctx)的引用,我在ctx对象上挂载了两个对象wechat和message
1、message 对象封装了微信发来的【普通消息】和【事件推送消息】,若要查看message对象的详细信息,请点击 这里message对象
2、this.reply 对象是将要回复的内容,这个对象的属性要严格按照要求书写,具体规则在这里回复对象
3、wechat 对象是这个中间件中最核心的,实现了大部分的功能
功能:获取accessToken。因为调用accessToken的接口每天的调用频率是有上限的,不能频繁调用,所以这里实现了accessToken的自管理,开发者不必关心accessToken是否过期,过期之后会自动去微信服务器请求并更新最新的accessToken。
var wechat=ctx.wechat;
var token=await ctx.getAccessToken();
功能:获取jsapi_ticketj,sapi_ticket是公众号用于调用微信JS接口的临时票据。jsapi_ticket与token类似,在微信网页开发中需要用到,也需要全局缓存。
var wechat=ctx.wechat;
var jsApiTicket=await ctx.getJsApiTicket();
功能:上传临时素材
参数
属性 | 类型 | 说明 |
---|---|---|
type | String | 支持的值有image, voice, video, thumb |
filePath | String | 多媒体文件的路径 |
返回值(json)
属性 | 说明 |
---|---|
type | 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb,主要用于视频与音乐格式的缩略图) |
media_id | 媒体文件上传后,获取标识 |
created_at | 媒体文件上传时间戳 |
var wechat=ctx.wechat;
var media=await ctx.uploadTemporaryMaterial("image","文件的路径");
功能:创建自定义菜单
参数:
属性 | 类型 | 说明 |
---|---|---|
menuObj | Object | 菜单对象,格式要符合规定的格式 |
var menu = {
button: [
{
type: "click",
name: "今日歌曲",
key: "V1001_TODAY_MUSIC"
},
{
name: "菜单",
sub_button: [
{
type: "view",
name: "搜索",
url: "http://www.soso.com/"
},
{
type: "click",
name: "赞一下我们",
key: "V1001_GOOD"
}]
}]
};
var wechat=ctx.wechat;
await wechat.createMenu(menu);
功能:获取json格式的自定义菜单
var wechat=ctx.wechat;
var menu=await wechat.getMenu();
功能:删除自定义菜单
var wechat=ctx.wechat;
var menu=await wechat.deleteMenu();
koa是一个基于node实现的一个新的web框架,它是由express框架的原班人马打造的。它的特点是优雅、简洁、表达力强、自由度高。它更express相比,它是一个更轻量的node框架
我们知道,Koa 中间件是以级联代码(Cascading) 的方式来执行的。类似于回形针的方式,今天这篇文章就来分析 Koa 的中间件是如何实现级联执行的。在 koa 中,要应用一个中间件,我们使用 app.use()
Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。
安装 koa、简单使用、级联中间件的概念、获取get请求参数、获取post表单数据和文件上传、路由中间件 koa-router
想使用nodejs(koa)搭建一个完整的前后端,完成数据的增删改查,又不想使用数据库,那使用json文件吧。本文介绍了基于koa的json文件的增、删、改、查。
对于一个服务器应用来说,日志的记录是必不可少的,我们需要使用其记录项目程序每天都做了什么,什么时候发生过错误,发生过什么错误等等,便于日后回顾、实时掌握服务器的运行状态,还原问题场景
Koa 应用程序是一个包含一组中间件函数的对象,它是按照类似堆栈的方式组织和执行的。当一个中间件调用 next() 则该函数暂停并将控制传递给定义的下一个中间件。当在下游没有更多的中间件执行后,堆栈将展开并且每个中间件恢复执行其上游行为
上传文件在开发中是很常见的操作,今天我选择使用koa-multer中间件来实现这一功能,除了上传文件外,我还会对文件上传进行限制,以及发生上传错误时的处理。由于原来的 koa-multer 已经停止维护,我们要使用最新的 @koa/multer
这篇文章会讲些什么?如何从零开始完成一个涵盖Koa核心功能的Node.js类库,从代码层面解释Koa一些代码写法的原因:如中间件为什么必须调用next函数、ctx是怎么来的和一个请求是什么关系
Nodejs官方api支持的都是callback形式的异步编程模型。问题:callback嵌套问题,koa2 是由 Express原班人马打造的,是现在比较流行的基于Node.js平台的web开发框架,Koa 把 Express 中内置的 router、view 等功能都移除了
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!