import * as Koa from "koa";
import* as fs from "fs";
import* as path from "path";
const app= newKoa();
app.use(async ctx=>{//console.log(ctx.url);
//console.log(ctx.method);
//let postData = await parsePostData(ctx);
//ctx.body = 'Hello World';
if (isPost("/", ctx)) {
let postData=await parsePostData(ctx);
console.log("收到的参数postData: ", postData);
saveFile(JSON.stringify(postData));
}
});//设置监听端口
app.listen(3000, () =>{
console.log("服务器开启 127.0.0.1:3000");
});
let saveFilePath= "./File";
let saveFileName= "tongguanTime.json";/** 保存文件
* @param content 保存的文件内容*/
functionsaveFile(content: string) {if (!fs.existsSync(saveFilePath)) {if(mkdirsSync(saveFilePath)) {
console.log(`${saveFilePath} 创建成功`);
}
}try{
fs.writeFileSync(path.join(saveFilePath, saveFileName), content);
console.log("文件保存成功");
}catch(error) {
console.log(error);
}
}/** 递归创建文件夹
* @param dirPath 文件夹路径*/
functionmkdirsSync(dirPath) {if(fs.existsSync(dirPath)) {return true;
}else{if(mkdirsSync(path.dirname(dirPath))) {
fs.mkdirSync(dirPath);return true;
}
}
}/** 解析 post 参数*/
functionparsePostData(ctx) {return new Promise((resolve, reject) =>{try{
let postData= '';
ctx.req.addListener('data', (data) => { //有数据传入的时候
postData +=data;
});
ctx.req.on('end', () =>{
let parseData=parseQueryStr(postData);
resolve(parseData);
});
}catch(e) {
reject(e);
}
})
}//处理 string => json
functionparseQueryStr(queryStr) {//console.log("queryStr: ",queryStr);
let queryData ={};
let queryStrList= queryStr.split('&');//console.log("queryStrList: ",queryStrList);
for(let queryStr of queryStrList) {
let itemList= queryStr.split('=');//console.log('itemList: ', itemList);
queryData[itemList[0]] = decodeURIComponent(itemList[1]);
}//console.log("queryData: ",queryData);
returnqueryData;
}/** 是否是post请求
* @param path url路径
* @param ctx koa2的上下文对象*/
functionisPost(path, ctx) {return ctx.url === path && ctx.method === 'POST';
}