案例
案例
- 案例1:返回json
当ctx.body
的类型为对象时,则自动会设置为json格式返回。
server.get("/api", (ctx) => {
ctx.body = {code: 0, name: "张三"}
})
- 案例2:返回文本
server.get("/api", (ctx) => {
ctx.body = "hello"
})
- 案例3:文件下载
server.any("/test", (ctx) => {
try {
//读取本地文件
let file = fs.readFile("./http/test1.js");
//设置文件下载的响应头
ctx.header.set("Content-Disposition", `attachment; filename="文件.js"`);
ctx.header.set("Content-Type", "text/javascript; charset=utf-8");
//文件内容设置为body
ctx.body = file;
} catch (e) {
//文件读取错误后,提供错误响应
ctx.body = {code: 1, error: e.message};
}
});
- 案例4:excel文件生成并返回下载
server.any("/test", (ctx) => {
//创建excel文件
let file = excel.createFile();
try {
//写入文件内容
file.setCellValue("Sheet1", "A1", "测试1");
file.setCellValue("Sheet1", "A2", "测试2");
//设置文件下载和文件类型
ctx.header.set("Content-Disposition", `attachment; filename="文件1.xlsx"`);
ctx.header.set("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
//获取文件的字节流
ctx.body = file.getBuffer();
} catch (e) {
//异常报错
ctx.body = {code: 1, error: e.message};
} finally {
//记得一定要关闭文件
file.close();
}
});