相关阅读:

Express 4.X API 翻译[一] --  Application篇

Express4.XApi 翻译[二] --  Request篇

Express4.XApi 翻译[三] --- Response篇

Express4.XApi 翻译[四] --- Router篇

本篇是Express 4.0 API翻译的第三篇,本篇的内容主要是Response的相关操作。

res.status(code)

支持连贯调用的node’s的 res.statusCode = 的别名。

 
 res.status(404).sendfile('path/to/404.png');

res.set(field,[value])

设置请求头的字段为指定的值,或者通过一个对象一次设置多个值。

 
 res.set('Content-Type','text/plain');

 res.set({
'Content-Type':'text/plain',
'Content-Length':'123',
'ETag':'12345'
});

别名为:res.header(field,[value]); 。

res.get(field)

获取不区分大小写的响应头 “field”(字段)。

 
 res.get('Content-Type');
//=>"text/plain"

res.cookie(name,value,[options])

设置cookie name 的值为 value,接受参数可以一个字符串或者是对象转化成的JSON,path 默认设置为’/’。

 
 res.cookie('name','tobi',{domain:'.example.com',path:'/admin',secure:true});
res.cookie('rememberme','1',{expires:new Date(Date.now() + 900000),httpOnly:true});

最大生存期参数[maxAge] 是一个方便的设置项来设置过期时间,值为相对于当前时间的毫秒时间。下面的代码就是这样的一个例子。

 
 res.cookie('rememberme','1',{maxAge:900000,httpOnly:true});

当一个对象被序列化为JSON后是可以被设置为值的,并且它也会自动被bodyParser()中间件解析。

 
 res.cookie('cart',{items:[1,2,3]});
res.cookie('cart',{items:[1,2,3]},{maxAge:900000});

被签名的cookie也同样被支持通过这种方法设置,简单的通过signed参数。当被给定的res.cookie()将会使用通过cookieParser(secret)传递进来的参数来签名。

 
 res.cookie('name','tobi',{signed:true});

之后你就可以通过req.signedCookie对象来访问这个值。

res.clearCookie(name,[options])

清除名为 name 的cookie ,默认作用域为’/’

 
 res.cookie('name','tobi',{path:'/admin'});
res.clearCookie('name',{path: '/admin'});

res.redirect([status],url)

重定向至给定的 url 并且支持指定 status 代码,默认为 302 方式

 
 res.redirect('/foo/bar');
res.redirect('/http://example.com');
res.redirect(301,'http://example.com');
res.redirect('../login');

Express支持 一下几种重定向首先是通过全的符合规则的URL重定向到一个完全不同的域名。

 
 res.redirect('http://google.com');

第二点是相对根域名重定向,例如,如果你想从http://example.com/admin/post/new 跳转至 /admin 下,你使用下面的代码,将会是你跳转到http://ehttp://example.com/admin

 
 res.redirect('/admin');

第三点是相对于挂载点跳转,例如,如果你的博客程序挂载在’/blog’,而事实上,它是不知道自己被挂载在哪里的,此时你想重定向至’/admin/post/new’下,你将会被带到’http://example.com/admin/post/new’ 使用下面的代码,将会将页面重定向至’http://example.com/blog/admin/post/new’

 
 res.redirect('admin/post/new');

当然也是允许页面路径相对跳转的。如果你现在在’http://example.com/admin/post/new’,使用下面的代码,你可以被带到’http://example.com/admin/post’

 
 res.redirect('..');

最后还有一种特殊的跳转,即’back’重定向,它会将您重定向至 Referer (或者是Referrer),当来源不存在时默认定向至 ‘/’下。

 
 res.redirect('back');

res.location

设置location响应头

 
 res.location('/foo/bar');
res.location('/foo/bar');
res.location('http://example.com');
res.location('../login');
res.location('back');

可以使用与res.redirect()相同的urls

例如,如果你的程序被挂载在/blog 下面的代码将会将location响应头赋值为/blog/admin

 
 res.location('admin');

res.send([body|status],[body])

发送一个响应。

 
 res.send(new Buffer('whoop'));
res.send({sond:'json'});
res.send('some html');
res.send(404,'Sorry, we cannot find that!');
res.send(500,{error:'something blew up'});
res.send(200);

在简单的non-streaming响应时,这个方法会自动进行一些有用的任务。例如如果之前没有定义过Content-Length,他会自动分配,它会自动设置一些HEAD信息,或者HTTP缓存支持。

当传入的内容为指定的Buffer,那么Content-Type会被设置为”application/octet-stream” 除非你预先执行了下面的定义。

 
 res.set("Content-Type",'text/html');
res.send(new Buffer('some html'));

当一个数组或者是对象被传入Express将会自动转化为JSON的形式响应:

 
 res.send({user:'tobi'});
res.send([1,2,3]);

最后,如果给定的参数是一个数字,而且没有上面提到的任何一个响应体,Express会为你设置一个默认的响应体。例如200 将会被设置响应体为 “OK” 和 404 将会被设置为”Not Found” 等。

 
 res.send(200)
res.send(404)
res.send(500)

res.json([status|body],[body])

发送一个JSON响应。这个方法与res.send()是完全相同的,当一个对象或者数组被传入的时候。然而它或许是有用的,例如在转化一些非对象(null,undefined,等等),因为这些并不是有效的JSON。

 
 res.json(null)
res.json({user:'tobi'});
res.json(500,{error:'message'});

res.jsonp([status|body],[body])

发送一个支持JSONP的JSON响应。这个方法是和res.json()完全相同的,但是它支持JSONP callback

 
 res.jsonp(null);
//=>null
res.jsonp({user:'tobi'});
//=>{"user": "tobi"}
res.jsonp(500,{error:'message'})
//=>{"error":"message"}

默认的JSONP回调函数名字是callback ,然而你可以通过jsonp callback name 设置项来设置,下面的代码是使用jsonp的一些例子。

 
 // ?callback=foo
res.jsonp({user:'tobi'})
//=>foo({"user":"tobi"})
app.set('jsonp callback name','cb') //?cb=foo
res.jsonp(500,{error:'message'});
//=>foo({"error":"message"});

res.type(type)

将内容的类型设置为MIME类型的 type ,可以是简写,也可以是存在’/’的字符串。当’/’存在时,类型就确定为type

 
 res.type('.html');
res.type('html');
res.type('json');
res.type('application/json');
res.type('png');

res.format(object)

设置特定请求头的响应,这个方法是使用req.accepted,这个是一个根据其可接受类型的重要性排序的数组,否则,第一个回调函数将会被调用。当没有合适的匹配时,系统返回406 “NotAcceptable” 或者调用 default 回调函数。

Content-Type会被设置好在你被选择的回调函数执行的时候,然而你可以通过res.set()或者res.type()更改这里的类型。

下面的例子为在接受请求头字段被设置为”application/json”或者”*/json”的时候回返回{“message”:”hey”},然而,如果”*/*”时将会返回”hey”。

 
 res.format({
'text/plain':function(){
res.send('hey');
},
'text/html':function(){
res.send('hey');
},
'application/json':function(){
res.send({message:"hey"});
}
});

除了使用一些标准的MIME类型,你也可以是用扩展名映射这些类型,下面是一些详细的展示。

 
 res.format({
text:function(){
res.send('hey');
},
html:function(){
res.send('hey');
},
json:function(){
res.send({message:'hey'});
}
});

res.attachment([filename])

设置响应头”Content-Disposition”的值为”attachment”。如果一个文件被给定,然后Content-Type将会被自动设置为基于其扩展名的的类型通过res.type(),然后Content-Disposition的”filename=”字段将会自动被设置。

 
 res.attachment();
//Content-Disposition :attachment
res.attachment('path/to/logo.png');
//Content-Disposition : attachment;filename="logo.png"
//Content-Type: image/png

res.sendfile(path,[options],[fn])

path用来传递文件的路径。

通过文件的扩展名将会自动设置默认的Content-Type,然后回调函数 fn(err)将会被调用在传送后或者是产生任何错误的时候。

Options:

  • maxAge 以毫秒为单位,默认是0
  • root 相对于文件名的根目录

这种方法提供了细粒度的文件存储缩略图服务

 
 app.get('/user/:uid/photo/:file',function(req,res){
var uid = req.params.uid,
file = req.params.file;
req.user.mayVierFilesFrom(uid,function(yes){
if(yes){
res.sendfile('/uploads/'+uid+'/'+file);
}else{
res.send(403,'Sorry! you cant see that.');
}
})
})

点击此处寻求更多的帮助,send

res.download(path,[filename],[fn])

path传输所需要传输的文件的路径,通常浏览器会提示用户下载。浏览器弹出的下载文件窗口的文件名和响应头里的Content-Disposition 的”filename=”参数是一致的。你也可以自己定义文件名。

当发生错误或者是一个文件传送完成将会调用回调函数 fn 。这个方法是用res.sendfile()来发送文件。

 
 res.download('/report-12345.pdf');
res.download('/report-12345.pdf','report.pdf');
res.download('/report-12345.pdf','report.pdf',function(err){
if(err){
//处理错误,可能只有部分内容被传输,所以检查一下res.headerSent
}else{
//减少下载的积分值之类的。
}
});

res.link(links)

合并并填充响应头内的”Link”字段,通过给定的links。

 
 res.links({
next:'http://api.example.com/users?page=2',
last:'http://api.example.com/users?page=5'
});

处理后

 
 Link: <http://api.example.com/users?page=2>; rel="next",
<http://api.example.com/users?page=5>; rel="last"

res.locals

一次请求的本地化变量,因此只能保持在一次请求/响应的view的输出之前,其实这个和API的app.locals是一样的。

这个对象是放置请求级的信息,此时放置请求的路径名,验证过的用户和用户设置等等。

 
 app.use(function(req,res,next){
res.locals.user = req.user;
res.locals.authenticated = ! req.user.anonymous;
next();
});

res.render(view,[locals],callback)

渲染一个view,同时向callback传递渲染后的字符串,如果在渲染过程中有错误发生next(err)将会被自动调用。callback将会被传入一个可能发生的错误以及渲染后的页面,这样就不会自动输出了。

 
 res.render('index',function(err,html){
//....
});
res.render('user',{name :'Tobi'},function(err,html){
//...
})

转自:http://www.90it.net/expressjs-4-api-zh-cn-response.html

Nodejs Express 4.X 中文API 3--- Response篇的更多相关文章

  1. Nodejs Express 4.X 中文API 1--- Application篇

    相关阅读: Express 4.X API 翻译[一] --  Application篇 Express4.XApi 翻译[二] --  Request篇 Express4.XApi 翻译[三] -- ...

  2. Nodejs Express 4.X 中文API 4--- Router篇

    相关阅读: Express 4.X API 翻译[一] --  Application篇 Express4.XApi 翻译[二] --  Request篇 Express4.XApi 翻译[三] -- ...

  3. Nodejs Express 4.X 中文API 2--- Request篇

    相关阅读: Express 4.X API 翻译[一] --  Application篇 Express4.XApi 翻译[二] --  Request篇 Express4.XApi 翻译[三] -- ...

  4. nodejs 框架 中文express 4.xxx中文API手册

       介于最近express 中文文档比较难找的现状,特地找了一个,供大家学习思考 Express 4.x API express 翻译 api文档 中文 --     express() expre ...

  5. NodeJs+Express+SqlServer简易后台API服务搭建

    首先安装nodejs 第一步 创建node项目配置package.json如下 express 使用方法可参考http://www.runoob.com/nodejs/nodejs-express-f ...

  6. 【Azure 应用服务】NodeJS Express + MSAL 实现API应用Token认证(AAD OAuth2 idToken)的认证实验 -- passport.authenticate('oauth-bearer', {session: false})

    问题描述 在前两篇博文中,对NodeJS Express应用 使用MSAL + AAD实现用户登录并获取用户信息,获取Authorization信息 ( ID Token, Access Token) ...

  7. NodeJS+Express+MongoDB

    一.MongoDB MongoDB是开源,高性能的NoSQL数据库:支持索引.集群.复制和故障转移.各种语言的驱动程序丰富:高伸缩性:MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言 ...

  8. windows下nodejs express安装及入门网站,视频资料,开源项目介绍

    windows下nodejs express安装及入门网站,视频资料,开源项目介绍,pm2,supervisor,npm,Pomelo,Grunt安装使用注意事项等总结 第一步:下载安装文件下载地址: ...

  9. vue+nodejs+express+mysql 建立一个在线网盘程序

    vue+nodejs+express+mysql 建立一个在线网盘程序 目录 vue+nodejs+express+mysql 建立一个在线网盘程序 第一章 开发环境准备 1.1 开发所用工具简介 1 ...

随机推荐

  1. linux 的开机启动脚本顺序

    linux 开机启动脚本顺序 linux 开机启动脚本顺序. 第一步:启动内核 第二步:执行init (配置文件/etc/inittab) 第三步:启动相应的脚本,并且打开终端/etc/init.d  ...

  2. HTTP协议中PUT/GET/POST/HEAD等介绍

    HTTP协议中GET.POST和HEAD的介绍 GET: 请求指定的页面信息,并返回实体主体. HEAD: 只请求页面的首部. POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体 ...

  3. Python初学者笔记(4)-简单的通讯录

    要求: 编写一个简单的通讯录 1.通讯录包含至少包含姓名.电话号码.电子邮箱:2.通讯录的信息能够保存在本地磁盘:3.通讯录查找特定人员的信息:4.通讯录能够修改特定人员的信息:5.通讯录能够删除特定 ...

  4. 解决matplotlib中文乱码问题(Windows)

    1.修改matplotlibrc文件 进入Python安装目录下的Lib\site-packages\matplotlib\mpl-data目录,打开matplotlibrc文件,删除font.fam ...

  5. Excle快速输入√与×

    如何在EXCLE中快速输入√与×呢 很简单的一个小技巧,只需要在EXCLE单元格中输入P(O) 然后将其字体设置为Wingdings 2,接着就出现符号了 不信你可以试试的哦.

  6. 我爱我家:我为什么选择AppCan?

    10年前,说起手机,大家联想到的词大概是:电话.短信.QQ.拍照,以及贪吃蛇等有限的几个小游戏.而如今,手机毫无疑问已经成为人们生活中不可或缺的部分.这是一个神奇的东西:通讯工具,外卖神器,游戏机,移 ...

  7. Android的一些常用命令提示符(cmd)指令

    在<Android基础之用Eclipse搭建Android开发环境和创建第一个Android项目>中我曾介绍过如何给Android SDK配置环境变量,现在它就有用武之地了,我们可以直接在 ...

  8. shell 与用户交互

    bash shell如何获取命令行参数(添加到命令后的数据).命令行选项(确定命令行为的英文字母).键盘输入数据? 操作命令行参数 1 读取参数 bash shell用位置参数变量(positiona ...

  9. 无法加载一个或多个请求的类型。有关更多信息,请检索 LoaderExceptions 属性

    一解决方法: 问题的主要原因出在:跨程序集反射. 即我们需反射的A.dll的程序集引用B.dll程序集,而在反射工具项目中却不存在对B.dll程序集的引用.因此我们只需在反射工具项目中添加对B.dll ...

  10. JavaScript显示输出

    记得c语言里的printf和java里的println吗,那么在JavaScript中怎么实现同样的功能呢 window.onload = function() { var para = docume ...