pbui展示插件

实现原理

  1. 将pb转换成json 主要利用pb位置进行解析
  2. 编写ui插件,调用go提供的服务,解析成json,在页面呈现
const axios = require('axios')

const toPbJSON = async (body) => {
  const r = await axios
    .post('http://127.0.0.1:8000/decode', body);

  // 可视化
  const data = JSON.stringify(r.data, null, 2);
  console.log('data ' + data)
  return data
};

module.exports = (router) => {
  router.post('/cgi-bin/pbview', async (ctx) => {
    const {base64} = ctx.request.body;
    console.log('body ' + base64 + 'type ' + (typeof base64));
    const result = { pbjs: '' };
    if (base64 && typeof base64 === 'string') {
      result.pbjs = await toPbJSON(Buffer.from(base64, 'base64'));
    }
    console.log('pbjs ' + result.pbjs)
    ctx.body = result;
  });
};

部署方式

  1. 部署go后台服务
  2. 安装whistle以及 对应的pbui插件
  3. 抓包,可以看到pb被正常解析
git clone https://github.com/losemy/pb_json.git
go build 或者 go run
不熟悉go的也可以提issue 直接提供可使用的二进制文件

git clone https://github.com/losemy/whistle.pbui.git
npm i -g whistle lack
npm install axios npm install --save axios
npm link

w2 start

代码地址

whistleui插件
pb解析成json插件