请求

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. 杭电-------2051Bitset(C语言)

    #include<stdio.h> ] = { }; int main() { int m; ; while (~scanf("%d", &m)) { whil ...

  2. Red Team 指南-第1章 红队和红队概述

    第1章 红队和红队概述 贡献者:Tony Kelly @infosectdk # 翻译者 BugMan 什么是红队?它来自哪里? 红队的起源是军事起源.人们意识到,为了更好地防御, 需要攻击自己的防御 ...

  3. Windwos日志分析

    Windows日志分析工具 查看系统日志方法: 在“开始”菜单上,依次指向“所有程序”.“管理工具”,然后单击“事件查看器” 按 "Window+R",输入 ”eventvwr.m ...

  4. centos7使用MySQL的Yum存储库安装mysql5.7.27

    下载yum源 官网地址:http://dev.mysql.com/downloads/repo/yum/ centos7系统: http://dev.mysql.com/get/mysql57-com ...

  5. vue中阻止事件穿透的方法

    默认情况下,事件在h5页面会穿透传递,比如一div里面套一个div,点击上层div,下层div也会响应 要阻止事件穿透,使用event.stopPropagation(); 代码示例: <div ...

  6. Spring ioc(4)---如何解决循环依赖

    前面说到对象的创建,那么在创建的过程中Spring是怎么又是如何解决循环依赖的呢.前面提到有个三级缓存.就是利用这个来解决循环依赖.打个比方说实例化A的时候,先将A创建(早期对象)放入一个池子中.这个 ...

  7. Blend 修改TreeViewItem样式

    Blend 修改TreeViewItem样式 1.用Blend for Visual Studio 2019 新建Wpf项目,拖动一个TreeView控件到Grid上 <Grid> < ...

  8. [MongoDB]mongodb的命令行操作

    ./mongo1.查看所有数据库show dbs2.切换数据库use 数据库名3.查询所有集合show collections4.查询所有文档db.文档名.find()db.文档名.find().pr ...

  9. Play! 1.x Eclipse Debug调试报错解决方法记录

    使用Play eclipsify xxxx[项目路径],可以把play new xxxx[项目路径]创建的工程生成为Eclipse的项目 但是在Debug AS 调试的时候,会报以下错误 Error ...

  10. npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules

    Mac 权限不够  前面加sudo   然后输入密码