2025年认识ctx对象、ctx的方法

认识ctx对象、ctx的方法ctx req 原生 request 对象 ctx res 原生 response 对象 ctx request koa 的 request 对象 ctx response koa 的 response 对象 ctx throw 抛异常 ctx redirect 重定向 301 永久重定向 302 临时重定向 const Koa require

大家好,我是讯享网,很高兴认识大家。

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()) 

看一下客户端:已经设置上了,可以设置自定义头,也可以设置官方头。
在这里插入图片描述
在这里插入图片描述

小讯
上一篇 2025-01-20 09:39
下一篇 2025-02-21 20:51

相关推荐

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