加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
app.js 2.70 KB
一键复制 编辑 原始数据 按行查看 历史
wow-karala 提交于 2021-10-18 14:45 . --
'use strict'
//切换工作目录
process.chdir(__dirname);
const titbit = require('titbit');
const fs = require("fs");
const dbcfg = require('./dbconfig.js');
const pg = require("pg");
const wxkey = require('./wxkey.js');
const {httpcli} = require('gohttp');
const token = require("titbit-token");
const tbloader = require("titbit-loader");
try{
fs.accessSync('./images')
}catch(err){
fs.mkdirSync('./images')
}
let psql = new pg.Pool(dbcfg);
let cert_path = '/usr/local/share'
const app = new titbit({
//开启错误模式,有错误会输出错误信息
debug:true,
globalLog:true,
cert:`${cert_path}/api.52h5.xyz.pem`,
key:`${cert_path}/api.52h5.xyz.key`
})
let tb = new tbloader();
tb.init(app);
//helper助手模块,c.reply在HTTP/1.1协议里指向response.在/2协议里指向http2stream
//post请求
app.addService('psql',psql);
app.addService('imagePath',`${__dirname}/images`)
let tok = new token({
//token有效期,单位为秒
expires :45,
//必须是32位字符
key:'asdfghjklzxcvbnmqwertyuiop123456',
//必须是16位字符
iv:'zxcvbnmasdfghjkl'
})
app.addService('tok',tok);
app.get('/mp-login/:code',async c=>{
let auth_url = `https://api.weixin.qq.com/sns/jscode2session`
+ `?appid=${wxkey.appid}`
+ `&secret=${wxkey.secret}`
+ `&js_code=${c.param.code}`
+ `&grant_type=authorization_code`
let ret = await httpcli.get(auth_url)
.then(res=>{
return res.json()
})
c.send(tok.make(ret));
})
/*app.get('/decrypt/:token',async c=>{
c.send(tok.verify(c.param.token));
})*/
//运行在1234端口
app.run(4255)
/*HTTP 消息头 content-type 指定了数据的类型(数据的格式)。
Client
content-type描述的值要和提交的BODY数据格式一致
Server
根据content-type的值决定如何解析Body数据。
content-type:
multipart/form-data;boundary = xxx -------文件解析
text/* ---------文本类型
application/* -------------要看具体值,application/json也是文本类型
..... -------每种类型如何处理是双方设计好的通信方式
到web框架这一层面,则如何处理是开发框架设计好的,但通常都要遵循一个原则:
允许开发者做自己的处理
在本框架范围内:
multipart类型 c.body是object类型,文件信息解析到c.files.
application/x-www-form-urlencoded 传统的表单类型,c.body是object类型,用于获取提交的表单数据。
text/* c.body是文本类型,c.body= c.rawBody.toString('utf-8');
其他类型:c.body是buffer类型,就是对c.rawBody的引用。
*/
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化