请求

get

ctx.request.query       // 查询对象
ctx.request.querystring // 查询字符串
ctx.query               // 查询对象
ctx.querystring         // 查询字符串

post

  • 查询对象无法直接通过ctx获得,需要对ctx.req进行解析,监听data和end事件进行查询字符串的拼装

koa-bodyparser

ctx.request.body        // 查询对象
app.use(bodyParser())   // 使用bodyParser

路由

原生路由

  • 通过解析url,获取静态文件路径

  • 通过fs.readFile(文件路径,"binary",callback)获得解析的页面结构

  • 赋值ctx.body

koa-router

var router = new Router({prefix:"顶层路径"})    // 声明路由
router.get(路径, callback)                      // 监听访问
router.use(父级路径,router.routes(),router.allowedMethods())    // 装载子路由
app.use(router.routes())                        // 注册应用路由
app.use(router.allowedMethods());               // 限制请求类型

cookie

设置

ctx.cookies.set(键","值"{
    domain:'127.0.0.1',             // 所在域名
    path:'/index',                  // 所在路径
    maxAge:1000*60*60*24,           // 有效时长
    expires:new Date('2018-12-31'), // 过期时间
    httpOnly:false,                 // 是否只用于http请求中获取
    overwrite:false                 // 是否允许重写
})

获取

ctx.cookies.get("键")

视图模版

koa-views

const views = require('koa-views')
const path = require('path')
app.use(views(path.join(__dirname, './view'), { extension: 'ejs'}))

静态资源

koa-static

const static = require('koa-static')
app.use(static(path.join(__dirname, 资源路径)));

Application

设置

app.listen()        // 监听端口号
app.callback()      // 返回适用于http.createServer()回调函数来处理请求
app.use()           // 载入中间件
app.keys=           // 设置签名的Cookie密钥
app.context         // ctx的原型

错误处理

  • 执行自定义错误处理逻辑,可以添加一个error事件侦听器
app.on('error',(err, ctx)=> {
    log.error('server error', err)
})

Context

属性/方法 描述
ctx.req Node的request对象
ctx.res Node的response对象
ctx.request koa的request对象
ctx.response koa的response对象
ctx.state 推荐的命名空间
ctx.app 应用程序实例引用
ctx.cookies.get() 获取cookie
ctx.cookies.set() 设置cookie
ctx.throw() 抛出错误
ctx.assert() 断言测试函数
ctx.respond 是否让koa处理response对象

Request

属性/方法 描述
request.header 请求标头对象
request.headers 请求标头对象(header别名)
request.method 请求方法类型
request.length 请求的Content-Length
request.url 请求的url
request.originalUrl 请求的源url
request.origin 获取URL的来源(包括protocol和host)
request.href 获取完整的请求URL(包括protocol,host和url)
request.path 获取请求路径名
request.querystring 根据?获取原始查询字符串
request.search 使用?获取原始查询字符串
request.host 获取当前主机
request.hostname 存在时获取主机名
request.URL 获取WHATWG解析的URL对象
request.type 获取请求Content-Type不含参数"charset"
request.charse 在存在时获取请求字符集
request.query 获取解析的查询字符串对象
request.fresh 检查请求缓存是否“新鲜”,也就是内容没有改变
request.stale 与request.fresh相反
request.protocol 返回请求协议
request.secure 通过ctx.protocol=="https"来检查请求是否通过TLS发出
request.ip 请求远程地址
request.ips 当X-Forwarded-For存在并且app.proxy被启用时,这些ips的数组被返回
request.subdomains 将子域返回为数组
request.is(types...) 检查传入请求是否包含Content-Type头字段
request.accepts(types...) 检查给定的types是否可以接受
request.acceptsEncodings(encodings) 检查encodings是否可以接受
request.acceptsCharsets(charsets) 检查charsets是否可以接受
request.acceptsLanguages(langs) 检查langs是否可以接受
request.idempotent 检查请求是否是幂等的
request.socket 返回请求套接字
request.get(field) 返回请求标头

Response

属性/方法 描述
response.header 响应标头对象
response.headers 响应标头对象(header别名)
response.socket 请求套接字
response.status 获取响应状态
response.message 获取响应的状态消息
response.length 响应的Content-Length
response.body 响应主体
response.get(field) 不区分大小写获取响应标头字段值field
response.set(field, value) 设置响应标头field到value
response.append(field, value) 用值val附加额外的标头field
response.set(fields) 用一个对象设置多个响应标头fields
response.remove(field) 删除标头field
response.type 获取响应Content-Type不含参数"charset"
response.is(types...) 非常类似ctx.request.is()检查响应类型是否是所提供的类型之一
response.redirect(url, [alt]) 执行重定向
response.attachment([filename]) 将Content-Disposition设置为附件以指示客户端提示下载
response.headerSent 检查是否已经发送了一个响应头
response.lastModified 将Last-Modified标头返回为Date, 如果存在
response.etag 设置包含包裹的ETag响应
response.vary(field) 在field上变化
response.flushHeaders() 刷新任何设置的标头,并开始主体

koa文档笔记的更多相关文章

  1. ABP文档笔记系列

    ABP文档笔记 - 模块系统 及 配置中心 ABP文档笔记 - 事件BUS ABP文档笔记 - 数据过滤 ABP文档笔记 - 规约 ABP文档笔记 - 配置.设置.版本.功能.权限 ABP文档笔记 - ...

  2. koa文档参考

    koa文档 简介 koa 是由 Express 原班人马打造的,致力于成为一个更小.更富有表现力.更健壮的 Web 框架.使用 koa 编写 web 应用,通过组合不同的 generator,可以免除 ...

  3. 转一篇:文档笔记之Django QuerySet

    这个放着,说不定以后作一些更深入的查询时,用得着的. http://www.rapospectre.com/blog/7/ 今天刚刚答完辩体完检就跑来更新博客了!!! 先补上第一篇: 一般情况下,我们 ...

  4. ABP文档笔记 - 通知

    基础概念 两种通知发送方式 直接发送给目标用户 用户订阅某类通知,发送这类通知时直接分发给它们. 两种通知类型 一般通知:任意的通知类型 "如果一个用户发送一个好友请求,那么通知我" ...

  5. ABP文档笔记 - 数据过滤

    预定义的过滤 ISoftDelete 软删除过滤用来在查询数据库时,自动过滤(从结果中抽取)已删除的实体.如果一个实体可以被软删除,它必须实现ISoftDelete接口,该接口只定义了一个IsDele ...

  6. ABP文档笔记 - 事件BUS

    文档: ABP框架 - 领域事件(EventBus) EventBus & Domain Events ABP源码分析二十五:EventBus EventBus(事件总线) EventBus是 ...

  7. asp.net mvc5中使用Swagger 自动生成WebApi文档笔记

    Swagger可以自动生成Api说明文档,并内置在线测试,通过NSwagStudio还可以自动生成Api客户端调用代码,以下为具体实现步骤 1.写一个简单的WebApi并加上注释 public cla ...

  8. TProfiler部署文档--笔记

    TProfiler是一个可以在生产环境长期使用的性能分析工具.它同时支持剖析和采样两种方式,记录方法执行的时间和次数,生成方法热点 对象创建热点 线程状态分析等数据,为查找系统性能瓶颈提供数据支持. ...

  9. ABP文档笔记 - 配置、设置、版本、功能、权限

    配置 全局仅一个单例,保存一组配置信息,一般直接在模块的预启动事件中赋值or修改.没有Scope划分,无论租户还是房东亦或者用户读取的值都不会有差异.每个模块都可以扩展这个配置. 设置 它没有层级关系 ...

随机推荐

  1. 论文《Entity Linking with Effective Acronym Expansion, Instance Selection and Topic Modeling》

    Entity Linking with Effective Acronym Expansion, Instance Selection and Topic Modeling 一.主要贡献 1. pro ...

  2. zabbix 自定义监控项报警给单独的人

    需求就是某个交换机的流量达到某个值后需要报警,但报警的内容不是发给所有的人,而是只发给特定的一个人,而其他的报警信息不能让他收到,他只能收到这一个报警项的报警 1:创建好用户定义好手机号 2:新增加一 ...

  3. 阿里云ECS服务器,mysql无法外网访问

    可参考https://www.jianshu.com/p/7a41734b502e 问题原因 未授权远程IP地址登录.root用户默认只能在localhost也就是本机登录 解决方案 在服务器上登录数 ...

  4. a标签没有闭合引起自动插入很多a标签的问题

    a标签中间没有内容的情况下,很容易忽略闭合 a标签一定要闭合,否则会在后面每个div后面插入同一个a标签 要以如下形式闭合: <div class="v5-index-containe ...

  5. Java集合那点事, 满满干货~

    说到Java集合,可以说是初学者必踩的坑了. 那么怎么才能学好Java集合呢?个人认为关键是要理清楚思路,从上而下,建立一套完整的思维体系,这样才能更好的去认识事物的本质. 先确立一下学习Java集合 ...

  6. 学习笔记——python(继承)

    学习笔记(Python继承) 有几种叫法(父类-子类.基类-派生类)先拿代码演示一下: class father: def work(self): print("work>>&g ...

  7. npm下载文件临时目录、实际存放目录路劲

    npm 下载文件临时存放目录 路劲:C:\Users\xxxxxx\AppData\Roaming\npm\node_modules ( C:\Users\dihongwanyan\AppData\R ...

  8. author模块

    一.auth模块简介 1.什么是auth模块,auth模块主要是解决什么问题 还是那句话,‘没有无缘无故的爱,也没有无缘无故的恨   凡是必有因’, 像我们开发一个网站,不可避免的设计网络用户系统,比 ...

  9. kuangbin专题 专题九 连通图 Warm up HDU - 4612

    题目链接:https://vjudge.net/problem/HDU-4612 题目:一个大地图,给定若干个连通图,每个连通图中有若干个桥,你可以在任意某个连通图的 任意两个点添加一条边,问,添加一 ...

  10. 今日确定开源近两年来的EA程序

    从2018年开始研究mt4的mql,在2019年主要设计了NinjaLoveFishEA这款网格程序,稳定运行了1年多,今年的伊朗被袭击,造成金价大幅上涨,-18%止损我离场后,决定不再继续研究了. ...