Express4.x常用API(一):res
最近在学习NodeJS,用到了express,看着官网上的API手册,打算把其中比较常用到的API根据自己理解翻译一下,方便自己学习使用.
该篇打算用来记录下express中res.
由于水平有限,希望能得到大家的修改,在学习过程中我会持续更新修改
- Properties
- res.app
- res.headersSent
- res.locals
- Methods
- res.append()
- res.cookie()
- res.clearCookie()
- res.download()
- res.end()
- res.format()
- res.get()
- res.json()
- res.jsonp()
- res.links()
- res.location()
- res.redirect()
- res.render()
- res.send()
- res.sendFile()
- res.sendStatus()
- res.set()
- res.status()
- res.type()
- res.vary()
Response
res对象表示的是Express收到了HTTP请求时的应答.
虽然经常写作res,但是其实你可以自己自由的在回调函数中去定义它
app.get('/',function(req,res){//第二个参数res就是Response
res.send("!");
})
Properties
res.app:只是用于保存哪个express应用实例在使用中间件.res.app和req.app是应答中是一样的.
res.headersSent:是一个boolean值,在你的res对象发送后会变为true,如res.send();之后.
res.locals:一个JavaScript对象,它可以用于获取并保存req中的信息,并且生命周期在整个应答周期中.
Methods
res.append(field[,value])
对HTTP应答头部追加特别的值,值能为字符串或数组.在之后使用res.set()会重置之前所有的值.
res.cookie(name,value[,options])
就是设置cookie的函数啦~这个name和value就不必多说了,但是值得注意的是value应该是字符串或者能转换为JSON的对象.options参数是一个对象并含有下列属性.
| Property | Type | Description |
|---|---|---|
| domain | String | cookie的域名,默认为app的名称 |
| expires | Date | cookie的有效期,没有指定或设为0,创建的有效期为此次会话 |
| httpOnly | Boolean | 标志cookie只能被web服务器使用 |
| maxAge | String | 方便的通过毫秒设置cookie的有效期 |
| path | String | cookie的path,默认是"/". |
| secure | Boolean | 表示这个cookie只能用于HTTPS |
| signed | Boolean | 指出该cookie是否被标记 |
res.clearCookie(name[,options])
顾名思义,清楚cookie的函数,options可以参考上表
res.download(path[,filename][,fn])
和res.attachment()后res.send()/res.end()一样,用于提供文件的下载服务,第一个参数为文件在服务器的位置,第二个参数则是提供给用户的默认的下载名称,第三个参数为回调函数,可以用于处理下载错误或统计下载数.res.download()使用了res.sendFile()来传输文件
res.end([data][,encoding])
结束应答的处理,这个方法来自于Node core
这个方法标志着服务器应答的所有头部和数据都已经发送完毕.在express中通常用于快速的结束无数据的应答,如果需要返回数据,用res.send()和res.json().
res.format(object)
调用req.accepts()来获取请求的类型,并根据请求类型执行不同的函数,对于这个,还是放代码比较好吧.以下为官方API的代码,在无匹配的情况下默认执行default函数.
res.format({
'text/plain': function(){
res.send('hey');
},
'text/html': function(){
res.send('<p>hey</p>');
},
'application/json': function(){
res.send({ message: 'hey' });
},
'default': function() {
// log the request and respond with 406
res.status(406).send('Not Acceptable');
}
});
res.get(field)
返回相应头部信息,注意的是在处理周期中,不使用res.append()和res.set()设置头部信息,头部信息为undefined.
res.json([body])
发送一个JSON应答,这个方法和res.send()使用对象或数组作为参数完全相同(但是测试后发现在处理null上,两个函数是有差别的,send()会返回空白字符串,而json()会返回null字符串).你也可以用null和undefined作为参数传入(尽管它们在严格意义上不是有效的JSON数据)
res.jsonp([body])
和res.json的方法是基本一样的,但是添加了对jsonp的支持.对于回调函数的名称可以用app.set('jsonp callback name','callbackName')来设置
res.links(links)
设置Link应答头部.
res.location(path)
设置HTTP应答location头部,返回状态码302时(表示文档转移时)自动跳转到location所表示链接上.设置为"back"则跳转到前一个页面
res.redirect([status,]path)
重定向到其他网页,status默认为302.感觉和res.location()+res.status(302).end()差不多,不过path支持back字符串来回退到referer,".."来回退上一个目录
res.render(view[,locals][,callback])
- 如果有callback函数:渲染后的HTML string作为参数传入,不会直接发送到接收方.next(err)不被执行,会将err当作参数传入,不会有默认响应.
- 如果没有callback函数:渲染后的HTML string会直接返回给请求方.发生错误会执行next(err)
可以在callback函数中进行渲染后模板的拼接或修改.
res.send([body])
发送HTTP应答,body参数有以下几个选项,如果之前没有定义Content-Type,根据参数不同有不同的Content-Type
- 对象->JSON
- 数组->JSON
- 字符串->test/html
- Buffer对象->application/octet-stream
- 数字->根据数字对应状态码的不同返回字符,200->OK,404->Not Found
该方法主要特点在于在non-streaming应答时能自动的完成对header的添加.如HTTP缓存和Content-Length
res.sendFile(path,[,options][,fn])
传输path指出的文件,并根据文件拓展名生成Content-Type.除非root在options中已经被设置了,不然path应该是文件的绝对路径.
options对象属性设置如下表:
在传输完成或者错误发生后,将会调用fn(err)
| Property | Description | Default | Availability |
|---|---|---|---|
| maxAge | 设置Cache-Control的max-age属性,值为毫秒或ms format | 0 | |
| root | 设置根目录 | ||
| lastModified | 设置Last-Modified头部为系统上文件的最后修改日期,设置为false可以禁用它 | Enabled | 4.9.0+ |
| headers | 设置HTTP头部,类型为对象 | ||
| dotfiles | 设置是否提供隐藏文件,可设置为"allow","deny","ignore" | "ignore" |
res.sendStatus(statusCode)
发送HTTP应答状态码,在状态码有效情况下res.sendStatus(200) 等同于res.status(200).send("OK")
如果输入的状态码无效,HTTP statu依旧会被设定为参数值,并且返回字符串变为传入参数值.
res.set(field[,value])
一次性设定完应答头部信息,如果之前有设置头部信息,则会被覆盖.传入的一个参数为对象/两个参数为相对应的头部和值.
res.status(code)
使用该方法设定HTTP 应答的status.相关:Response.statusCode()
res.type(type)
使用该方法设定HTTP 应答的Content-Type,如果传入参数为"/",则Content-Type会被设置为type.该方法用于判断type的函数来自于mime.lookup()
res.vary(field)
在没有Vary应答头部时增加Vary应答头部.
Express4.x常用API(一):res的更多相关文章
- Express4.x常用API(二):Request
这是第二篇了,打算每天都拿些时间去详细的看看文档来自学下express吧,接下来就开始了,这次依然是有选择性的找API根据自己的理解翻译过来,方便日后开发时候的自己查阅,由于水平有限,大概也会在使用过 ...
- Express ( MiddleWare/中间件 路由 在 Express 中使用模板引擎 常用API
A fast, un-opinionated, minimalist web framework for Node.js applications. In general, prefer simply ...
- 小程序常用API介绍
小程序常用API接口 wx.request https网络请求 wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 method:"GET&qu ...
- html5 canvas常用api总结(一)
1.监听浏览器加载事件. window.addEventListener("load",eventWindowLoaded,false); load事件在html页面加载结束时发生 ...
- compass General 常用api学习[Sass和compass学习笔记]
compass 中一些常用api 包括一些浏览器hack @import "compass/utilities/general" Clearfix Clearfix 是用来清除浮动 ...
- java基础3.0:Java常用API
本篇介绍Java基础中常用API使用,当然只是简单介绍,围绕重要知识点引入,巩固开发知识,深入了解每个API的使用,查看JavaAPI文档是必不可少的. 一.java.lang包下的API Java常 ...
- C++ 中超类化和子类化常用API
在windows平台上,使用C++实现子类化和超类化常用的API并不多,由于这些API函数的详解和使用方法,网上一大把.本文仅作为笔记,简单的记录一下. 子类化:SetWindowLong,GetWi ...
- node.js整理 02文件操作-常用API
NodeJS不仅能做网络编程,而且能够操作文件. 拷贝 小文件拷贝 var fs = require('fs'); function copy(src, dst) { fs.writeFileSync ...
- js的常用api
JavaScript常用API总结 原创 2016-10-02 story JavaScript 下面是我整理的一些JavaScript常用的API清单. 目录 元素查找 class操作 节点操作 属 ...
随机推荐
- React Native 组件样式测试
View组件默认样式(注意默认flexDirection:'column') {flexGrow:0,flexShrink:0,flexBasis:'auto',flexDirection:'colu ...
- SQL查询关于相对路径、矢代、绝对路径、递归、计算列的速度对比跟优化-SOD群记录
1秒查原本递归的查询. 适用于:上下级.多层查询 -- Get childs by parent id WITH Tree AS ( SELECT Id,ParentId FROM dbo.Node ...
- Visual Studio 下C#编译器在解析属性名时如果增加一个get_[您的另一个已经包含在类中属性名]的属性会报错,微软大哥这是什么鬼?
假设在在我们的vs环境新建一个类 copy以下代码,表面看好像一切都没有问题. using System; using System.Collections.Generic; using System ...
- AngularJs的UI组件ui-Bootstrap分享(一)
最近几个月学习了AngularJs和扩展的UI组件,并在公司小组内做了一次分享交流,感觉很有收获,在此记录下个人的学习心得. 目录: AngularJs的UI组件ui-Bootstrap分享(一) A ...
- 例子:Database - Linq to sql
DataContext类型(数据上下文)是System.Data.Linq命名空间下的重要类型,用于把查询句法翻译成SQL语句,以及把数据从数据库返回给调用方和把实体的修改写入数据库. DataCon ...
- Github注册过程
一 github注册过程: 1.首先百度github官网,进入官网页面 2.在该页面分别输入昵称,昵称需要不和别人的重复,而后输入邮箱地址,该邮箱不能注册过这个网站,最后输入密码,密码至少要有七个 ...
- 《C++primer》v5 第4章 表达式 读书笔记 习题答案
4.1 105 4.2 *vec.begin()=*(vec.begin())//先调用点运算符,再解引用 *vec.begin()+1=(*vec.begin())+1//先解引用,再加一 4.3略 ...
- jquery点赞和取消点赞插件
<script> /* @author:Romey * 动态点赞 * 此效果包含css3,部分浏览器不兼容(如:IE10以下的版本) */ $(function(){ $("#p ...
- 现在遇到一个问题,无法判断url是属于哪一个CDN
解决的办法是到申请域名的网站上面去调用api获取域名的cname来确定
- W3C代码标准规范
一.目的: 为什么要遵循标准我们作为生产者实际上只是位于中游,既不是上游的浏览器制造商,他们是标准的真正制定者,也不算是下游,他们是浏览器的终端使用者.这个角色就意味着我们位于一个接口的位置,我们需要 ...