koa文档笔记
请求
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文档笔记的更多相关文章
- ABP文档笔记系列
ABP文档笔记 - 模块系统 及 配置中心 ABP文档笔记 - 事件BUS ABP文档笔记 - 数据过滤 ABP文档笔记 - 规约 ABP文档笔记 - 配置.设置.版本.功能.权限 ABP文档笔记 - ...
- koa文档参考
koa文档 简介 koa 是由 Express 原班人马打造的,致力于成为一个更小.更富有表现力.更健壮的 Web 框架.使用 koa 编写 web 应用,通过组合不同的 generator,可以免除 ...
- 转一篇:文档笔记之Django QuerySet
这个放着,说不定以后作一些更深入的查询时,用得着的. http://www.rapospectre.com/blog/7/ 今天刚刚答完辩体完检就跑来更新博客了!!! 先补上第一篇: 一般情况下,我们 ...
- ABP文档笔记 - 通知
基础概念 两种通知发送方式 直接发送给目标用户 用户订阅某类通知,发送这类通知时直接分发给它们. 两种通知类型 一般通知:任意的通知类型 "如果一个用户发送一个好友请求,那么通知我" ...
- ABP文档笔记 - 数据过滤
预定义的过滤 ISoftDelete 软删除过滤用来在查询数据库时,自动过滤(从结果中抽取)已删除的实体.如果一个实体可以被软删除,它必须实现ISoftDelete接口,该接口只定义了一个IsDele ...
- ABP文档笔记 - 事件BUS
文档: ABP框架 - 领域事件(EventBus) EventBus & Domain Events ABP源码分析二十五:EventBus EventBus(事件总线) EventBus是 ...
- asp.net mvc5中使用Swagger 自动生成WebApi文档笔记
Swagger可以自动生成Api说明文档,并内置在线测试,通过NSwagStudio还可以自动生成Api客户端调用代码,以下为具体实现步骤 1.写一个简单的WebApi并加上注释 public cla ...
- TProfiler部署文档--笔记
TProfiler是一个可以在生产环境长期使用的性能分析工具.它同时支持剖析和采样两种方式,记录方法执行的时间和次数,生成方法热点 对象创建热点 线程状态分析等数据,为查找系统性能瓶颈提供数据支持. ...
- ABP文档笔记 - 配置、设置、版本、功能、权限
配置 全局仅一个单例,保存一组配置信息,一般直接在模块的预启动事件中赋值or修改.没有Scope划分,无论租户还是房东亦或者用户读取的值都不会有差异.每个模块都可以扩展这个配置. 设置 它没有层级关系 ...
随机推荐
- k8s系列---网络插件flannel
跨节点通讯,需要通过NAT,即需要做源地址转换. k8s网络通信: 1) 容器间通信:同一个pod内的多个容器间的通信,通过lo即可实现: 2) pod之间的通信,pod ip <---> ...
- php面试笔记(7)-php基础知识-文件及目录处理考点
本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 在面试中,考官往往喜欢基础扎实的面试者,而文件及目录处理 ...
- .NET Core MVC 静态文件应用
一.静态文件应用方面 ASP.NET Core 静态文件应用,主要分为两方面:网站访问和静态文件整合 二.案例 1.访问静态文件 我们都知道,在 ASP.NET 项目中,我们的静态文件一般要放在 ww ...
- Git分支管理介绍
分支管理 软件的版本控制以及分支管理贯穿于整个软件产品的生命周期,日常的项目管理对于开发团队能否有节奏且顺利的交付软件也很重要.本分支管理和版本控制规范主要分为3个部分,即分支管理规范.版本号规范.需 ...
- wow.js wow.min.js animate.css animate.min.css
奉献给下载不到源码的小伙伴,下载到的请忽视 wow.js (function() { var MutationObserver, Util, WeakMap, getComputedStyle, ge ...
- SAP SD 销售中的借贷项凭证
SAP SD 销售中的借贷项凭证 SAP系统中,正常与客户的应收款都能通过销售订单来实现. 但实际操作中,常有收款后发现价格有误或其他原因需退款客户或补收客户货款的情况,或者客户需要少量的材料,但不能 ...
- \n不换行
\n在js中表示换行,<br/>在html中表示换行,所以如果在设置innerHtml值时使用 \n ,那么在页面上并不会显示换行,而在设置innerText值时使用 \n 就会显 ...
- ES6中map数据结构
key值可以任意值或对象,value值可以是任意值或对象 let json={ name:'eternity', skill:'java' }; let map=new Map(); map.set( ...
- Python学习记录(一):Anaconda3的安装、配置与使用
简单说下为啥要创建Python虚拟环境呢? 不同的Python工程中用到的包不尽相同,相同包的版本也可能不一样,一种方法是使得各个环境相对独立. 假如说某一个环境崩了,直接remove掉就可以了,不会 ...
- opencv —— 调用摄像头采集图像 VideoCapture capture(0);
如果要调用摄像头进行视频采集,将代码 VideoCapture capture("C:/Users/齐明洋/Desktop/1.mp4"); 中的 "C:/Users/齐 ...