koa 的 Context
context上下文对象: 该对象类似原生http中的 req + res
- 该对象的req,res属性也存在,就是原生没有包装过的req,res
- 简单说: context 对象就是从请求到响应 过程中的一个描述对象
- next函数:调用下一个中间件
- request(请求对象): 其中包含客户端请求的相关信息
- response(响应对象): 包含响应数据的具体操作 #### request常用属性 - ctx.request.url(ctx.url)
- ctx.request.method(ctx.method)
- ctx.request.headers(ctx.headers) #### response常用属性 - ctx.response.set(ctx.set) __函数:参数key,val__
- ctx.response.status(ctx.status) - ctx.response.body(ctx.body) #### 小结 - 以上所有使用的属性,都可以简写 ctx.xxx
- 使用async await的应用场景,如果你出现了异步操作,使用其, 后一个中间件使用了async,前后都使用
- 三主角: __函数前面 async, 内部才能await,要想await能有用,就用promise包裹他__
demo
//引入对象
const Koa = require('koa');
//创建服务器对象
const app = new Koa();
//配置
app.use((ctx,next)=> {
ctx.body = 'Hello World';
console.log(ctx.url); // /
console.log(ctx.method); // GET
// { host: 'localhost:8880',
// 'cache-control': 'max-age=0',
// 'upgrade-insecure-requests': '1',
// 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
// accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
// 'accept-encoding': 'gzip, deflate, br',
// 'accept-language': 'zh-CN,zh;q=0.9',
// connection: 'close' }
console.log(ctx.headers);
next(); });
// Request URL: http://localhost:8880/
// Request Method: GET
// Status Code: 200 OK
// Remote Address: 127.0.0.1:1080
// Referrer Policy: no-referrer-when-downgrade
// Connection: close
// Content-Length: 18
// Content-Type: text/plain; charset=utf-8
// Date: Tue, 25 Dec 2018 05:24:55 GMT
// Proxy-Connection: keep-alive
// test: 123
app.use((ctx)=>{
ctx.set('test',''); //test: 123
ctx.status=; //Status Code: 200 OK
ctx.body=`<h1>大家好</h1>` //<h1>大家好</h1>
})
app.listen(,(req,res)=>{
console.log('服务器已经启动了 ')
})
截图:


koa 的 Context的更多相关文章
- KoaHub平台基于Node.js开发的Koa的skip插件代码详情
koahub-skip koahub skip middleware koahub skip Conditionally skip a middleware when a condition is m ...
- 基于 Koa平台Node.js开发的KoaHub.js的跳过组件代码
koahub-skip koahub skip middleware koahub skip Conditionally skip a middleware when a condition is m ...
- KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架之koahub-skip
koahub-skip koahub skip middleware koahub skip Conditionally skip a middleware when a condition is m ...
- koa源码之delegate使用
koa中context可以直接调用request和response属性的重要原因是使用了delegate将req和res的属性代理到context, Delegator.prototype.gette ...
- koa源码阅读[1]-koa与koa-compose
接上次挖的坑,对koa2.x相关的源码进行分析 第一篇.不得不说,koa是一个很轻量.很优雅的http框架,尤其是在2.x以后移除了co的引入,使其代码变得更为清晰. express和koa同为一批人 ...
- 新一代web框架Koa源码学习
此文已由作者张佃鹏授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Koa 就是一种简单好用的 Web 框架.它的特点是优雅.简洁.表达力强.自由度高.本身代码只有1000多行 ...
- 从头实现一个koa框架
koajs是最流行的nodejs后端框架之一,有很多网站都使用koa进行开发,同时社区也涌现出了一大批基于koa封装的企业级框架.然而,在这些亮眼的成绩背后,作为核心引擎的koa代码库本身,却非常的精 ...
- Koa - 初体验(写个接口)
前言 不会node.js的前端不是一个好前端! 这几年node.js确实是越来越火了,好多公司对node.js都开始有要求.虽说前端不一定要会后端,但想要成为一个优秀的前端,node.js是必经之路. ...
- KoaHub.js:使用ES6/7特性开发Node.js框架
KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Function, Class, Async & ...
随机推荐
- 一、@Html.DropDownList
一.Html.DropDownList 通过linq 将datatable转换下拉列表 //查询城市 string CityId = WebCommon.Public.GetAdminCityId() ...
- linux用户的基本操作2 用户密码管理
目录 linux系统的基本用户操作2 用户的扩展知识 用户密码管理 linux系统的基本用户操作2 3)使用userdel删除账户 语法 : userdel [-r] username -r 同时删除 ...
- PNG文件格式
PNG文件的组成 一个PNG文件可以看作是由多个数据块(chunk)部分组成,如同积木一样,一个数据块就是一个小积木,不同类型的积木组合搭建成了我们的PNG图像. PNG图像至少由文件署名域和三个关键 ...
- 【Flutter学习】之DateTime日期转换
概述: 表示一个时间点 通过构造函数或解析格式化的字符串创建DateTime对象,并且符合ISO 8601标准的子集,小时是24小时制,范围在0-23之间 DateTime对象创建之后,将是固定不变的 ...
- jdbc 数据库批处理insert操作
package blob; import java.sql.Connection; import java.sql.PreparedStatement; import jdbc.utils.*; // ...
- Python基础教程(005)--为什么要学习Python?
前言 为什么要选择Python学习 知识点 因为Python代码量少. 同样一个问题,用不同的语言,代码量差距还是很大的.一半情况下,Python是java的1比5,所以说,人生苦短,我用Python ...
- [CSP-S模拟测试]:金(king)(高精度+模拟)
题目传送门(内部题36) 输入格式 第一行一个整数$T$,表示数据组数. 接下来$T$行,每行两个空格隔开的整数$n,m$. 输出格式 对于每组数据,输出一行$"Yes"$或$&q ...
- [NOIP模拟测试32]反思+题解
又考挂了QAQ 总rank直接滑出前20 晚上考试脑子还算比较清醒,可惜都用来xjb乱想错误思路了. T1一眼推柿子,然而并没有头绪所以先码了个暴力.然后…… 一个垃圾暴力我调了1h,大概解决了两位数 ...
- 【数据库】一篇文章搞掂:SQL Server数据库
问题: 1.同一段代码,在存储过程中运行比普通SQL执行速度慢几十倍 原理: 在SQL Server中有一个叫做 “Parameter sniffing”参数嗅探的特性.SQL Server在存储过程 ...
- ListView 分页显示(转载+修改)下
通过实践发现,尚大大在判断”上一页“按钮和”下一页按钮“是否可用的地方,有问题: 原代码: public void checkButton(){ //索引值小于等于0,表示不能向前翻页了,以经到了第一 ...