前言
使用koa
开发小程序后端服务,碰到需要生成小程序码。Node 调用wxacode.createQRCode
wxacode.getUnlimited
等接口来生成小程序码。
小程序码生成
请求地址
POST https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN
返回值
Buffer
Koa处理buffer数据
axios
npm install axios
const axios = require('axios')
async getWxacodePicture(ctx,next) {
const accessToken = await this.accessToken();
const url = `https://api.weixin.qq.com/wxa/getwxacode?access_token=${accessToken}`;
const params = { path: 'pages/home/index' };
let result = await axios.post(url, params, { responseType: 'stream' });
ctx.type = 'image/jpeg'
// koa 框架对 stream 流会进行 pipe处理
ctx.body = result.data;
}
request
npm install request
const request = require('request');
const PassThrough = require('stream').PassThrough;
async getWxacodePicture(ctx) {
const accessToken = await this.accessToken();
const url = `https://api.weixin.qq.com/wxa/getwxacode?access_token=${accessToken}`;
const params = { path: 'pages/home/index', is_hyaline: false };
ctx.body = request({ url, method: 'POST', json: params })
.on('response', (response) => {
Object.keys(response.headers).forEach((key) => {
if ('content-disposition' === key)
return;
ctx.set(key, response.headers[key]);
});
})
.on('error', ctx.onerror)
.pipe(PassThrough());
}