ctx.req 原生request对象
ctx.res 原生response对象
ctx.request koa的request对象
ctx.response koa的response对象
ctx.throw()抛异常:
ctx.redirect()重定向
- 301永久重定向
- 302临时重定向
const Koa = require("koa"); const Router = require("koa-router"); const fs = require("promise-fs"); let server = new Koa(); let router = new Router(); server.listen(8000); // 判断登录 let login = false; router.get('/', async ctx=> {
if(!login) {
ctx.redirect('/login') }else{
ctx.body="你已经入购物车页面" } }); // 重定向到登录页的时候 router.get('/login', async ctx=> {
let buffer = await fs.readFile('./public/login.html'); ctx.body = buffer.toString(); }) // 登录页提交数据后 router.post('/login', async ctx=> {
login = true; ctx.redirect('/') }) server.use(router.routes())
讯享网
下载附件:
讯享网const Koa = require("koa"); const Router = require("koa-router"); const fs = require("promise-fs"); let server = new Koa(); let router = new Router(); server.listen(8000); router.get('/download', async ctx=>{
ctx.attachment('数据统计.xlsx'); // 下载附件的名字和格式 ctx.body=await fs.readFile('./data/1.txt') }) server.use(router.routes())

推荐使用:
fs.createReadStream方法:读一点,发一点,对性能比较友好。
fs.readFile:读整个文件,发整个文件,占用内存和读磁盘,之后又占用网络,一个忙死,一个闲死,遇上大文件等待长。
const Koa = require("koa"); const Router = require("koa-router"); const fs = require("promise-fs"); // const MemoryStream = require("memorystream"); let server = new Koa(); let router = new Router(); server.listen(8000); router.get('/download', async ctx=>{
ctx.attachment('文件.doc'); // ctx.body = await fs.readFile('./data/1.txt'); ctx.body = await fs.createReadStream('./data/1.txt'); }); server.use(router.routes())
内存流memorystream:动态生成内容并下载,可以用于拼接数据。在内存中构建流。

讯享网npm i memorystream -D
案例:
const Koa = require("koa"); const Router = require("koa-router"); const fs = require("promise-fs"); const MemoryStream = require("memorystream"); let server = new Koa(); let router = new Router(); server.listen(8000); router.get('/download', async ctx=>{
let strem = new MemoryStream(); ctx.attachment('.txt'); // 下载的名字和格式 ctx.body=strem; strem.write("我是日志文件"); // 内容 strem.write("现在是2019年12月22日"); strem.end(); // 结束strem }) server.use(router.routes())

头操作:ctx.headers
在服务端获取客户端头的方法:格式是JSON。
讯享网const Koa = require("koa"); const Router = require("koa-router"); let server = new Koa(); let router = new Router(); server.listen(8000); router.get('/', async ctx=>{
console.log(ctx.headers); // 获取全部头 是json格式 console.log(ctx.headers['host']); // 指定获取host地址 console.log(ctx.get('host')); // 指定获取host地址 ctx.body = "welcome"; }); server.use(router.routes())
客户端发送请求:

服务端获取的情况:

给客户端设置头部:
const Koa = require("koa"); const Router = require("koa-router"); let server = new Koa(); let router = new Router(); server.listen(8000); router.get('/', async ctx=>{
ctx.set('name', 'enoch'); // 自定义头 ctx.set('age', '18'); ctx.set('set-cookie', 'type=12'); // 官方头 ctx.body = "welcome"; }); server.use(router.routes())
看一下客户端:已经设置上了,可以设置自定义头,也可以设置官方头。



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/30811.html