Koa v2.x 中文文档 上下文(Context)
上下文(Context)
此系列文章的应用示例已发布于 GitHub: koa-docs-Zh-CN. 可以 Fork 帮助改进或 Star 关注更新. 欢迎 Star.
Koa Context 将 node 的 request
和 response
对象封装到单个对象中,为编写 Web 应用程序和 API 提供了许多有用的方法。
这些操作在 HTTP 服务器开发中频繁使用,它们被添加到此级别而不是更高级别的框架,这将强制中间件重新实现此通用功能。
每个 请求都将创建一个 Context
,并在中间件中作为接收器引用,或者 ctx
标识符,如以下代码片段所示:
app.use(async ctx => {ctx; // 这是 Contextctx.request; // 这是 koa Requestctx.response; // 这是 koa Response
});
为方便起见许多上下文的访问器和方法直接委托给它们的 ctx.request
或 ctx.response
,不然的话它们是相同的。
例如 ctx.type
和 ctx.length
委托给 response
对象,ctx.path
和 ctx.method
委托给 request
。
API
Context
具体方法和访问器.
ctx.req
Node 的 request
对象.
ctx.res
Node 的 response
对象.
绕过 Koa 的 response 处理是 __不被支持的__. 应避免使用以下 node 属性:
res.statusCode
res.writeHead()
res.write()
res.end()
ctx.request
koa 的 Request
对象.
ctx.response
koa 的 Response
对象.
ctx.state
推荐的命名空间,用于通过中间件传递信息和你的前端视图。
ctx.state.user = await User.find(id);
ctx.app
应用程序实例引用
ctx.cookies.get(name, [options])
通过 options
获取 cookie name
:
signed
所请求的cookie应该被签名
koa 使用 cookies 模块,其中只需传递参数。
ctx.cookies.set(name, value, [options])
通过 options
设置 cookie name
的 value
:
maxAge
一个数字表示从 Date.now() 得到的毫秒数signed
cookie 签名值expires
cookie 过期的Date
path
cookie 路径, 默认是'/'
domain
cookie 域名secure
安全 cookiehttpOnly
服务器可访问 cookie, 默认是 trueoverwrite
一个布尔值,表示是否覆盖以前设置的同名的 cookie (默认是 __false__). 如果是 true, 在同一个请求中设置相同名称的所有 Cookie(不管路径或域)是否在设置此Cookie 时从 Set-Cookie 标头中过滤掉。
koa 使用传递简单参数的 cookies 模块。
ctx.throw([status], [msg], [properties])
Helper 方法抛出一个 .status
属性默认为 500
的错误,这将允许 Koa 做出适当地响应。
允许以下组合:
ctx.throw(400);
ctx.throw(400, 'name required');
ctx.throw(400, 'name required', { user: user });
例如 ctx.throw(400, 'name required')
等效于:
const err = new Error('name required');
err.status = 400;
err.expose = true;
throw err;
请注意,这些是用户级错误,并用 err.expose
标记,这意味着消息适用于客户端响应,这通常不是错误消息的内容,因为您不想泄漏故障详细信息。
你可以根据需要将 properties
对象传递到错误中,对于装载上传给请求者的机器友好的错误是有用的。这用于修饰其人机友好型错误并向上游的请求者报告非常有用。
ctx.throw(401, 'access_denied', { user: user });
koa 使用 http-errors 来创建错误。
ctx.assert(value, [status], [msg], [properties])
当 !value
时,Helper 方法抛出类似于 .throw()
的错误。这与 node 的 assert() 方法类似.
ctx.assert(ctx.state.user, 401, 'User not found. Please login!');
koa 使用 http-assert 作为断言。
ctx.respond
为了绕过 Koa 的内置 response 处理,你可以显式设置 ctx.respond = false;
。 如果您想要写入原始的 res
对象而不是让 Koa 处理你的 response,请使用此参数。
请注意,Koa 不 支持使用此功能。这可能会破坏 Koa 中间件和 Koa 本身的预期功能。使用这个属性被认为是一个 hack,只是便于那些希望在 Koa 中使用传统的 fn(req, res)
功能和中间件的人。
Request 别名
以下访问器和 Request 别名等效:
ctx.header
ctx.headers
ctx.method
ctx.method=
ctx.url
ctx.url=
ctx.originalUrl
ctx.origin
ctx.href
ctx.path
ctx.path=
ctx.query
ctx.query=
ctx.querystring
ctx.querystring=
ctx.host
ctx.hostname
ctx.fresh
ctx.stale
ctx.socket
ctx.protocol
ctx.secure
ctx.ip
ctx.ips
ctx.subdomains
ctx.is()
ctx.accepts()
ctx.acceptsEncodings()
ctx.acceptsCharsets()
ctx.acceptsLanguages()
ctx.get()
Response 别名
以下访问器和 Response 别名等效:
ctx.body
ctx.body=
ctx.status
ctx.status=
ctx.message
ctx.message=
ctx.length=
ctx.length
ctx.type=
ctx.type
ctx.headerSent
ctx.redirect()
ctx.attachment()
ctx.set()
ctx.append()
ctx.remove()
ctx.lastModified=
ctx.etag=
如果这篇文章对您有帮助, 感谢 下方点赞 或 Star GitHub: koa-docs-Zh-CN 支持, 谢谢.
Koa v2.x 中文文档 上下文(Context)相关推荐
- Springboot 中文文档 —— Actuator
文章目录 1 **启用** 2 **端点(endpoints)** 2.1 启用端点 2.2 公开端点 2.3 保护HTTP端点 2.4 配置端点缓存 2.5 配置 /actuator 路径 2.6 ...
- Spring Security中文文档
Spring Security中文文档 来源:https://www.springcloud.cc/spring-security.html#overall-architecture 作者 Ben A ...
- springboot中文文档_登顶 Github 的 Spring Boot 仓库!艿艿写的最肝系列
源码精品专栏 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 My ...
- Android 3.0 r1 API中文文档(107) —— AsyncPlayer
一.结构 public class AsyncPlayer extends Object java.lang.Object android.media.AsyncPlayer 二.概述 播放一个连续( ...
- React-Redux 中文文档
介绍 快速开始 React-Redux是Redux的官方React绑定库.它能够使你的React组件从Redux store中读取数据,并且向store分发actions以更新数据 安装 在你的Rea ...
- Beetl2.7.13 中文文档
## Beetl2.7.13 中文文档 ### 1. 什么是Beetl Beetl目前版本是2.7.13,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等特点.使 ...
- Spring Cloud Dalston.RELEASE中文文档
Spring Cloud Dalston.RELEASE中文文档 Spring Cloud 目录 特性 云原生应用程序 Spring Cloud上下文:应用程序上下文服务 引导应用程序上下文 应用程序 ...
- Tomcat7中文文档
2019独角兽企业重金招聘Python工程师标准>>> Tomcat7中文文档 注:本文根据tomcat官网(tomcat.apache.org)tomcat7.0官方文档整 ...
- Backbone.js(1.1.2) API中文文档
2019独角兽企业重金招聘Python工程师标准>>> Backbone.Events(事件) Events 是一个可以融合到任何对象的模块, 给予 对象绑定和触发自定义事件的能力. ...
最新文章
- 【论文速读】城市自动驾驶应用的概率语义地图
- TestStack.White安装详解
- 《树莓派实战秘籍》——2.7 技巧27尝试Occidentalis:为(高级)教育目的的树莓派发行版...
- jsforeach异步的问题_js中forEach回调同异步题目
- Flash MX 2004 中的文本遮罩
- 创建 OVS vlan100 netwrok - 每天5分钟玩转 OpenStack(137)
- 深入理解Java虚拟机运行时数据区
- 使用php生成条形码
- 洛谷 P4093 [HEOI2016/TJOI2016]序列(Cdq+dp)
- PCB工程的BOM表设置隔行隔列显示不同颜色操作方法
- mysql从一加到100_MYSQL用存储过程求1到100累加
- 一般椭圆方程表示的椭圆的绘制
- android11息屏显示,Android 11系统锁屏做出改善:不再显示专辑封面
- 碧蓝航线皇家巡游服务器更新维护,碧蓝航线更新公告
- 四级地址库 国家标准的行政区划代码 省市区街道
- 【DV】arbiter 的验证思路
- BFS广搜例题,问题引入 --- 阿狗荒岛逃生系列(其一)
- Shell小干货学到就不亏
- 计算机弹钢琴游戏,节奏弹钢琴
- 架构师成长之路(5)--如何获取知识(方法)
热门文章
- pandas合并groupby_Pandas中级技巧-数据的灵活运算
- 传递function_JS中!function(){}()的理解
- 多个浏览器同时访问mysql_48- 多线程启动多个不同浏览器
- 20210627:力扣第247周周赛(上)
- js中src赋值理解
- VB实现可执行文件运行时自删除
- 最高76%破解成功率!GAN已经能造出“万能指纹”,你的手机还安全吗?
- 英特尔AIDC2018:神经计算棒二代从天而降,软硬生态合作圈尽露锋芒
- 打车平台Lyft获Magna 2亿美元投资,携手打造自动驾驶汽车
- dubbo-monitor-simple-2.5.3-assembly 简易监控中心安装