koa常用api文档整理
koa 支持的配置
1.应用配置是 app 实例属性,目前支持的配置项如下
| 配置项名称 | 简介 |
|---|---|
| app.name | 应用名称(可选项) |
| app.env | 默认为 NODE_ENV 或者 development |
| app.proxy | 如果为 true,则解析 "Host" 的 header 域,并支持 X-Forwarded-Host |
| app.subdomainOffset | 默认为2,表示 .subdomains 所忽略的字符偏移量。 |
2.上下文相关
| api | 简介 |
| ctx.req | Node 的 request 对象 |
| ctx.res | Node 的 response 对象 |
| ctx.request | Koa 的 Request 对象。 |
| ctx.response | Koa 的 Response对象 |
| ctx.app | 应用实例引用。 |
| ctx.cookies.get(name, [options]) | 获得 cookie 中名为 name 的值, options 为可选参数:'signed': 如果为 true, 表示请求时 cookie 需要进行签名, 注意:Koa 使用了 Express 的 cookies 模块,options 参数只是简单地直接进行传递 |
| ctx.cookies.set(name, value, [options]) | 设置 cookie 中名为 name 的值, options 为可选参数: 1.signed: 是否要做签名; 2.expires: cookie 有效期时间; 3.path: cookie 的路径,默认为 /';domain: cookie 的域; 4.secure: false 表示 cookie 通过 HTTP 协议发送,true 表示 cookie 通过 HTTPS 发送。 5.httpOnly: true 表示 cookie 只能通过 HTTP 协议发送; 注意:Koa 使用了 Express 的 cookies 模块,options 参数只是简单地直接进行传递 |
| ctx.throw(msg, [status]) |
抛出包含 this.throw(403) 注意:这些用户级错误被标记为 |
| ctx.respond | 为了避免使用 Koa 的内置响应处理功能,您可以直接赋值 this.repond = false;。如果您不想让 Koa 来帮助您处理 reponse,而是直接操作原生 res 对象,那么请使用这种方法。 注意: 这种方式是不被 Koa 支持的。其可能会破坏 Koa 中间件和 Koa 本身的一些功能。其只作为一种 hack 的方式,并只对那些想要在 Koa 方法和中间件中使用传统 fn(req, res) 方法的人来说会带来便利。 |
3. 请求request
Koa Request 对象是对 node 的 request 进一步抽象和封装,提供了日常 HTTP 服务器开发中一些有用的功能。
| api | 简介 |
| req.header | 请求头对象 |
| req.method | 请求方法 |
| req.method= | 设置请求方法,在实现中间件时非常有用,比如 methodOverride()。 |
| req.length | 以数字的形式返回 request 的内容长度(Content-Length),或者返回 undefined。 |
| req.url | 获得请求url地址。 |
| req.url= | 设置请求地址,用于重写url地址时。 |
| req.originalUrl | 获取请求原始地址。 |
| req.path | 获取请求路径名。 |
| req.path= | 设置请求路径名,并保留请求参数(就是url中?后面的部分)。 |
| req.querystring | 获取查询参数字符串(url中?后面的部分),不包含 ?。 |
| req.querystring= | 设置查询参数。 |
| req.search | 获取查询参数字符串,包含 ?。 |
| req.search= | 设置查询参数字符串。 |
| req.host | 获取 host (hostname:port)。 当 app.proxy 设置为 true 时,支持 X-Forwarded-Host。 |
| req.hostname | 获取 hostname。当 app.proxy 设置为 true 时,支持 X-Forwarded-Host。 |
| req.type | 获取请求 Content-Type,不包含像 "charset" 这样的参数。
var ct =this.request.type; |
| req.charset | 获取请求 charset,没有则返回 undefined: |
| req.query | 将查询参数字符串进行解析并以对象的形式返回,如果没有查询参数字字符串则返回一个空对象。 注意:该方法不支持嵌套解析。 比如:
"color=blue&size=small": |
| req.query= |
根据给定的对象设置查询参数字符串。 this.query ={ next:'/login'};
|
| req.fresh | 检查请求缓存是否 "fresh"(内容没有发生变化)。该方法用于在 If-None-Match / ETag, If-Modified-Since 和 Last-Modified 中进行缓存协调。当在 response headers 中设置一个或多个上述参数后,该方法应该被使用。
this.set('ETag','123');
|
| req.stale | 与 req.fresh 相反。 |
| req.protocol | 返回请求协议,"https" 或者 "http"。 当 app.proxy 设置为 true 时,支持 X-Forwarded-Host |
| req.ip | 请求远程地址。 当 app.proxy 设置为 true 时,支持 X-Forwarded-Host。 |
| req.secure | 简化版 this.protocol == "https",用来检查请求是否通过 TLS 发送。 |
| req.ips | 当 X-Forwarded-For 存在并且 app.proxy 有效,将会返回一个有序(从 upstream 到 downstream)ip 数组。 否则返回一个空数组。 |
| req.subdomains |
以数组形式返回子域名。 子域名是在host中逗号分隔的主域名前面的部分。默认情况下,应用的域名假设为host中最后两部分。其可通过设置 举例来说,如果域名是 "tobi.ferrets.example.com": 如果没有设置 |
| req.is(type) | 检查请求所包含的 "Content-Type" 是否为给定的 type 值。 如果没有 request body,返回 undefined。 如果没有 content type,或者匹配失败,返回 false。 否则返回匹配的 content-type。
// With Content-Type: text/html; charset=utf-8 |
| Content Negotiation | Koa request 对象包含 content negotiation 功能(由 accepts 和 negotiator 提供):
req.accepts(types) 如果没有提供 types,将会返回所有的可接受类型。 如果提供多种 types,将会返回最佳匹配类型。如果没有匹配上,则返回 false,您应该给客户端返回 406 "Not Acceptable"。 |
| req.accepts(types) | 检查给定的类型 types(s) 是否可被接受,当为 true 时返回最佳匹配,否则返回 false。type 的值可以是一个或者多个 mime 类型字符串。 比如 "application/json" 扩展名为 "json",或者数组 ["json", "html", "text/plain"]。
// Accept: text/html |
| req.acceptsEncodings(encodings) | 检查 encodings 是否可以被接受,当为 true 时返回最佳匹配,否则返回 false。 注意:您应该在 encodings 中包含 identity。
// Accept-Encoding: gzip 当没有传递参数时,返回包含所有可接受的 encodings 的数组: // Accept-Encoding: gzip, deflate 注意:如果客户端直接发送 |
| req.acceptsCharsets(charsets) | 检查 charsets 是否可以被接受,如果为 true 则返回最佳匹配, 否则返回 false。
// Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5 当没有传递参数时, 返回包含所有可接受的 charsets 的数组: // Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5 |
| req.acceptsLanguages(langs) | 检查 langs 是否可以被接受,如果为 true 则返回最佳匹配,否则返回 false。
// Accept-Language: en;q=0.8, es, pt 当没有传递参数时,返回包含所有可接受的 langs 的数组: // Accept-Language: en;q=0.8, es, pt |
| req.idempotent | 检查请求是否为幂等(idempotent)。 |
| req.socket | 返回请求的socket。 |
| req.get(field) | 返回请求 header 中对应 field 的值。 |
4.响应(Response)
Koa Response 对象是对 node 的 response 进一步抽象和封装,提供了日常 HTTP 服务器开发中一些有用的功能。
| API | 简介 |
| res.header | Response header 对象。 |
| res.socket | Request socket。 |
| res.status | 获取 response status。不同于 node 在默认情况下 res.statusCode 为200,res.status 并没有赋值。 |
| res.statusString | Response status 字符串。 |
| res.status= | 通过 数字状态码或者不区分大小写的字符串来设置response status
100"continue" |
| res.length= | 通过给定值设置 response Content-Length。 |
| res.length | 如果 Content-Length 作为数值存在,或者可以通过 res.body 来进行计算,则返回相应数值,否则返回 undefined。 |
| res.body | 获得 response body。 |
| res.body= |
设置 response body 为如下值: string written 如果 res.status 没有赋值,Koa会自动设置为 200 或 204。
|
| String | Content-Type 默认为 text/html 或者 text/plain,两种默认 charset 均为 utf-8。 Content-Length 同时会被设置。 |
| Buffer | Content-Type 默认为 application/octet-stream,Content-Length同时被设置。 |
| Stream | Content-Type 默认为 application/octet-stream。 |
| Object | Content-Type 默认为 application/json。 |
| res.get(field) | 获取 response header 中字段值,field 不区分大小写。
var etag =this.get('ETag');
|
| res.set(field, value) | 设置 response header 字段 field 的值为 value。
this.set('Cache-Control','no-cache');
|
| res.set(fields) | 使用对象同时设置 response header 中多个字段的值。
this.set({
|
| res.remove(field) | 移除 response header 中字段 filed。 |
| res.type | 获取 response Content-Type,不包含像 "charset" 这样的参数。
var ct =this.type; |
| res.type= |
通过 mime 类型的字符串或者文件扩展名设置 response Content-Type this.type ='text/plain; charset=utf-8'; 注意:当可以根据 res.type 确定一个合适的 charset 时,charset 会自动被赋值。 比如 res.type = 'html' 时,charset 将会默认设置为 "utf-8"。然而当完整定义为 res.type = 'text/html'时,charset 不会自动设置。 |
| res.redirect(url, [alt]) | 执行 [302] 重定向到对应 url。 字符串 "back" 是一个特殊参数,其提供了 Referrer 支持。当没有Referrer时,使用 alt 或者 / 代替。 this.redirect('back');
如果想要修改默认的 [302] 状态,直接在重定向之前或者之后执行即可。如果要修改 body,需要在重定向之前执行。 this.status =301; |
| res.attachment([filename]) | 设置 "attachment" 的 Content-Disposition,用于给客户端发送信号来提示下载。filename 为可选参数,用于指定下载文件名。 |
| res.headerSent | 检查 response header 是否已经发送,用于在发生错误时检查客户端是否被通知。 |
| res.lastModified | 如果存在 Last-Modified,则以 Date 的形式返回。 |
| res.lastModified= | 以 UTC 格式设置 Last-Modified。您可以使用 Date 或 date 字符串来进行设置。
this.response.lastModified =newDate() |
| res.etag= | 设置 包含 "s 的 ETag。注意没有对应的 res.etag 来获取其值。
this.response.etag = crypto.createHash('md5').update(this.body).digest('hex');
|
| res.append(field, val) | 在 header 的 field 后面 追加 val。 |
| res.vary(field) | 相当于执行res.append('Vary', field)。 |
koa常用api文档整理的更多相关文章
- 常用API文档
Python requtets PyQuery Pascal Delphi PHP ThinkPHP5.0完全开发手册 ThinkPHP3.2.3快速入门
- JDK8 API离线文档免费下载&JavaEE API文档离线下载&API在线查看链接&常用的JAR包下载
1.JDK8 API离线文档 链接:https://pan.baidu.com/s/1fYc-QesmYRumTEPmnSgEKA 提取码:2bdr 2.JavaEE API文档离线下载 链接:htt ...
- Java,面试题,简历,Linux,大数据,常用开发工具类,API文档,电子书,各种思维导图资源,百度网盘资源,BBS论坛系统 ERP管理系统 OA办公自动化管理系统 车辆管理系统 各种后台管理系统
Java,面试题,简历,Linux,大数据,常用开发工具类,API文档,电子书,各种思维导图资源,百度网盘资源BBS论坛系统 ERP管理系统 OA办公自动化管理系统 车辆管理系统 家庭理财系统 各种后 ...
- API文档管理工具
系统庞大之后,前后端分离开发,前端调用后端提供的接口,请求协议一般是 HTTP,数据格式一般是 JSON.后台只负责数据的提供和计算,而完全不处理展现逻辑和样式:前端则负责拿到数据,组织数据并展现的工 ...
- Java在DOS命令下的运行及其API文档制作过程
该文档主要描述java程序在DOS命令下的运行,以及一些常用的命令 常用DOS命令: d: 回车 盘符切换 dir(directory):列出当前目录下的文件以及文件夹 md (make direct ...
- Bullet的学习资源(用Doxygen生成API文档)
Bullet 全称 Bullet Physics Library,是著名的开源物理引擎(可用于碰撞检测.刚体模拟.可变形体模拟),这里将bullet的学习资源整理一下,希望能帮助入门者少走弯路. 看下 ...
- JAVASE02-Unit01: API文档 、 字符串基本操作
API文档 . 字符串基本操作 文档注释 package day01; /** * 文档注释只能定义在三个地方: * 类,方法,常量 * * 文档注释是功能注释,用来说明功能作用 * 在类上使用的目的 ...
- HighCharts 详细使用及API文档说明
一.HighCharts开发说明: HighCharts开发实际上配置HighCharts每个部分,比如配置标题(title),副标题(subtitle)等,其中每个部分又有更细的参数配置,比如标题下 ...
- API文档的阅读
API ——Application Programming Interface(应用程序编程接口) API是应用程序接口的意思,API是Java提供的基本编程接口,当使用Java语言进行编程时,不可能 ...
随机推荐
- 六种Socket I/O模型幽默讲解
老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系.他们的信会被邮递员投递到他们的信箱里.这和Socket模型非常类似.下面就以此为例讲解Socket I/O模型. 零:阻塞模型 老陈非常 ...
- 【牛客网】Finding Hotel
[牛客网]Finding Hotel 忘记K远点对的剪枝的我有点自闭 事实上我们只要先建一棵KD树出来,维护一下所在的矩形,和子树里的最小值 每次查询的时候如果最小值比查询的值要大的话就退出 当前的答 ...
- Python之并行编程笔记
概述: 非并发: 1 程序由单个步骤序列构成 2 包含独立子任务的程序执行性能低 并发: 1 异步.高效 2 分解子任务.简化流程与逻辑 进程process:1 一个程序的执行实例 2 每个进 ...
- 谈谈Python中pop与remove的用法
remove() 函数用于移除列表中某个值的第一个匹配项. remove()方法语法: list.remove(obj) 如果obj不在列表中会引发 ValueError 错误,通常先使用count ...
- ftp-server(对象存储)
1.背景 在腾讯云弄了一个对象存储,想通过ftp上传照片 说明连接: 腾讯云:https://cloud.tencent.com/document/product/436/7214 GitHub:ht ...
- winform c# 请求网站,返回Json字符串
private void callApibjhb() { //输出执行的开始时间 Console.WriteLine(string.Format("Bind {0}", DateT ...
- VBA变量(七)
变量是一个指定的内存位置,用于保存脚本执行过程中可以更改的值.以下是命名变量的基本规则. 变量名称必须使用一个字母作为第一个字符. 变量名称不能使用空格,句点(.),感叹号(!)或字符@,&, ...
- VBA输入框(InputBox)(六)
InputBox函数提示用户输入值.当输入值后,如果用户单击确定 按钮或按下键盘上的ENTER 键,InputBox函数将返回文本框中的文本.如果用户单击“取消” 按钮,该函数将返回一个空字符串(&q ...
- # marshalsec使用
开启rmi服务,恶意类放到服务上 D:\jdk_1.8\bin\java.exe -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRe ...
- sql 给相同属性的数据排序
UPDATE b SET OrderIndex = a.OrderIndex FROM ( SELECT RTRIM(ROW_NUMBER() OVER ( PARTITION BY [ItemID] ...