1. context上下文对象: 该对象类似原生http中的 req + res
  2. - 该对象的req,res属性也存在,就是原生没有包装过的req,res
  3. - 简单说: context 对象就是从请求到响应 过程中的一个描述对象
  4. - next函数:调用下一个中间件
  5. - request(请求对象): 其中包含客户端请求的相关信息
  6. - response(响应对象): 包含响应数据的具体操作
  7.  
  8. #### request常用属性
  9.  
  10. - ctx.request.url(ctx.url)
  11. - ctx.request.method(ctx.method)
  12. - ctx.request.headers(ctx.headers)
  13.  
  14. #### response常用属性
  15.  
  16. - ctx.response.set(ctx.set) __函数:参数key,val__
  17. - ctx.response.status(ctx.status)
  18.  
  19. - ctx.response.body(ctx.body)
  20.  
  21. #### 小结
  22.  
  23. - 以上所有使用的属性,都可以简写 ctx.xxx
  24. - 使用async await的应用场景,如果你出现了异步操作,使用其, 后一个中间件使用了async,前后都使用
  25. - 三主角: __函数前面 async, 内部才能await,要想await能有用,就用promise包裹他__

demo

  1. //引入对象
  2. const Koa = require('koa');
  3. //创建服务器对象
  4. const app = new Koa();
  5. //配置
  6. app.use((ctx,next)=> {
  7. ctx.body = 'Hello World';
  8. console.log(ctx.url); // /
  9. console.log(ctx.method); // GET
  10. // { host: 'localhost:8880',
  11. // 'cache-control': 'max-age=0',
  12. // 'upgrade-insecure-requests': '1',
  13. // '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',
  14. // accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
  15. // 'accept-encoding': 'gzip, deflate, br',
  16. // 'accept-language': 'zh-CN,zh;q=0.9',
  17. // connection: 'close' }
  18. console.log(ctx.headers);
  19. next();
  20.  
  21. });
  22. // Request URL: http://localhost:8880/
  23. // Request Method: GET
  24. // Status Code: 200 OK
  25. // Remote Address: 127.0.0.1:1080
  26. // Referrer Policy: no-referrer-when-downgrade
  27. // Connection: close
  28. // Content-Length: 18
  29. // Content-Type: text/plain; charset=utf-8
  30. // Date: Tue, 25 Dec 2018 05:24:55 GMT
  31. // Proxy-Connection: keep-alive
  32. // test: 123
  33. app.use((ctx)=>{
  34. ctx.set('test',''); //test: 123
  35. ctx.status=; //Status Code: 200 OK
  36. ctx.body=`<h1>大家好</h1>` //<h1>大家好</h1>
  37. })
  38. app.listen(,(req,res)=>{
  39. console.log('服务器已经启动了 ')
  40. })

截图:

koa 的 Context的更多相关文章

  1. KoaHub平台基于Node.js开发的Koa的skip插件代码详情

    koahub-skip koahub skip middleware koahub skip Conditionally skip a middleware when a condition is m ...

  2. 基于 Koa平台Node.js开发的KoaHub.js的跳过组件代码

    koahub-skip koahub skip middleware koahub skip Conditionally skip a middleware when a condition is m ...

  3. 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 ...

  4. koa源码之delegate使用

    koa中context可以直接调用request和response属性的重要原因是使用了delegate将req和res的属性代理到context, Delegator.prototype.gette ...

  5. koa源码阅读[1]-koa与koa-compose

    接上次挖的坑,对koa2.x相关的源码进行分析 第一篇.不得不说,koa是一个很轻量.很优雅的http框架,尤其是在2.x以后移除了co的引入,使其代码变得更为清晰. express和koa同为一批人 ...

  6. 新一代web框架Koa源码学习

    此文已由作者张佃鹏授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Koa 就是一种简单好用的 Web 框架.它的特点是优雅.简洁.表达力强.自由度高.本身代码只有1000多行 ...

  7. 从头实现一个koa框架

    koajs是最流行的nodejs后端框架之一,有很多网站都使用koa进行开发,同时社区也涌现出了一大批基于koa封装的企业级框架.然而,在这些亮眼的成绩背后,作为核心引擎的koa代码库本身,却非常的精 ...

  8. Koa - 初体验(写个接口)

    前言 不会node.js的前端不是一个好前端! 这几年node.js确实是越来越火了,好多公司对node.js都开始有要求.虽说前端不一定要会后端,但想要成为一个优秀的前端,node.js是必经之路. ...

  9. KoaHub.js:使用ES6/7特性开发Node.js框架

    KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Function, Class, Async & ...

随机推荐

  1. WinForm解决UI假死

    运行WinForm程序时,如果后台执行比较费时的操作,前天UI就会假死卡住,很影响使用感受,这里我们简单的解决一下这个问题 using System; using System.Collections ...

  2. 转帖 移动前端开发之viewport的深入理解

    在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有明白了viewport的概念以及弄清楚了跟viewport有关的meta标签的使用,才能更好地让我们的网页适配或 ...

  3. redis单节点安装及cluster的安装

    单点安装 wget http://download.redis.io/releases/redis-4.0.2.tar.gz tar zxvf redis-4.0.1.tar.gz -C /usr/l ...

  4. Delphi ini文件操作 TIniFile、TMemIniFile

    1.使用TIniFile unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Co ...

  5. 洛谷 P1271 聚会的快乐(树状dp)

    题目描述 你要组织一个由你公司的人参加的聚会.你希望聚会非常愉快,尽可能多地找些有趣的热闹.但是劝你不要同时邀请某个人和他的上司,因为这可能带来争吵.给定N个人(姓名,他幽默的系数,以及他上司的名字) ...

  6. SCP-bzoj-1085

    项目编号:bzoj-1085 项目等级:Safe 项目描述: 戳这里 特殊收容措施: A*(上下界剪枝). 答案上界:15. 答案下界:当前步数+当前状态剩余步数估价. 这里我们简单地设计估价函数为当 ...

  7. python 线程,进程与协程

    引言 线程 创建普通多线程 线程锁 互斥锁 信号量 事件 条件锁 定时器 全局解释器锁 队列 Queue:先进先出队列 LifoQueue:后进先出队列 PriorityQueue:优先级队列 deq ...

  8. python selenium模拟登陆163邮箱。

    selenium是可以模拟浏览器操作. 有些爬虫是异步加载的,通过爬取网页源码是得不到需要的内容.所以可以模拟浏览器去登陆该网站进行爬取操作. 需要安装selenium通过pip install xx ...

  9. 75、python学习第一篇

    1.sys包下边的argv方法,从控制台获取数据 ''' Created on 2017年4月8日 @author: weizhen ''' import sys One = [" * &q ...

  10. 用 Flask 来写个轻博客 (4) — (M)VC_创建数据模型和表

    目录 目录 前文列表 扩展阅读 定义数据模型 models 创建表 前文列表 用 Flask 来写个轻博客 (1) - 创建项目 用 Flask 来写个轻博客 (2) - Hello World! 用 ...