相关阅读:

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

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

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

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

req.params

这是一个包含着被命名的路由规则“参数”的对象属性。例如如果你有一个路由规则为:”/user/:name”,然后这个”name”属性你就可以使用req.params.name来调用,这个属性默认为 {}

 
 //GET /user/tj
req.params.name
//=>"tj"

当在定义路由规则的时候使用了正则表达式,匹配结果会被提供在数组里使用req.params[N],这里的N指的是第n个匹配数组。这样的规则被应用在使用未命名的通配匹配规则,例如/file/*

 
 //GET /file/javascript/jquery.js
req.params[0]
// => "javascripts/jquery.js"

req.query

这个属性是一个对象属性包含着被解析过的请求参数对象,默认为{}

 
 //GET /search?q=tobi+ferret
req.query.q
//=>"tobi ferret" //GET /shoes?order=desc&shoe[color]=blue&shoe[type]=converse
req.query.order
// =>"desc"
req.query.shoe.color
//=>"blue"
req.query.shoe.type
//=>"converse"

req.body

这个属性是包含一个被解析过的请求体。这个功能是中间件 bodyParser 提供的,尽管其他的请求体解析中间件也会很好的支持这样的约定。这个属性会在使用了bodyParser()的时候被定义为{}。

 
 //POST user[name]=tobi&user[email]=tobi@learnboost.com
req.body.user.name
//=> "tobi"
req.body.user.email
// =>"tobi@learnboost.com"
//POST {"name":"tobi"}
req.body.name
//=>"tobi"

req.param(name)

返回一个参数名为 name 的值

 
 //?name=tobi
req.param('name');
//=>"tobi" //POST name=tobi
req.param('name')
//=>"tobi" // /user/tobi 对应的路由规则为 /user/:name
req.param('name')
//=> "tobi"

查找的优先级如下:

  • req.params
  • req.body
  • req.query

直接访问 req.body , req.params,和 req.query 应该是更加的清晰,除非你确实需要接受每个对象的输入。

req.route

当前匹配的 “Route” 包含一些属性,例如路由的原始字符串以及转换后的正则表达式等。

 
 app.get('/user/:id?',function(req,res){
console.log(req.route);
});

上面的例子将会输出以下内容:

 
 {
path: '/user/:id?',
keys: [ {name:'id',optional:true} ],
regexp: /^\/user(?:\/([^\/]+?))?\/?$/i,
params:[id: '12']
}

req.cookies

当cookieParser()中间件被使用的时候,这个对象将会被初始化为{},除此之外,还包含了由用户代理发送过来的cookies

 
 //Cookie: name=tj
req.cookies.name
// =>"tj"

如果有任何问题或者疑问,请查阅cookie-parser的附加文档

req.signedCookies

当 cookieParser(secret)中间件被执行的时候,这个对象会被初始化为{},还包含了用户代理发送过来的被签名的cookie,未签名的和准备使用的。签名后的cookies被存放在一个单独的对象内,否则,攻击者会很轻松的替换掉”req.cookie”内的值。需要注意的是,签名的cookies并不带表它们是隐藏的或者是加密的,这个只是同于防止篡改cookies。

 
 //Cookie: user = tobi.CP7AWaXDfAKIRfH49dQzKJx7sKzzSoPq7/AcBBRVwlI3
req.signedCookies.user
//=> "tobi"

如果有任何问题或者疑问,请查阅cookie-parser的附加文档

req.get(field)

获取请求头内的 field 字段,不区分大小写,其中Referrer 和 Referer字段是可互换的。

 
 req.get('Content-Type');
//=>"text/plain"
req.get('content-type');
// =>'text/plain'
req.get('Something');
//=> undefined

别名为 req.header(field);

req.accepts(types)

检查给定的类型 types 是不是可以接受的类型,当是可接受的类型时返回最佳的匹配,否则返回 undefined – 在这种情况下,你应该返回406″Not Acceptable”。

type 的值可以是单一的一个mine类型的字符串,比如”application/json”,扩展名为”json”,也可以是一个以逗号分隔的列表或者数组。当为列表或数组时将返回最佳匹配。

 
 //Accept: text/html
req.accepts('html');
//=>"html"
// Accept: text/*, application/json
req.accepts('html');
// => "html"
req.accepts('text/html');
// => "text/html"
req.accepts('json, text');
// => "json"
req.accepts('application/json');
// => "application/json"
// Accept: text/*, application/json
req.accepts('image/png');
req.accepts('png');
// => undefined
// Accept: text/*;q=.5, application/json
req.accepts(['html', 'json']);
req.accepts('html, json');
// => "json"

如果有任何问题或者疑问,请查阅accepts的附加文档

req.acceptsCharset(charset)

检查给定的 charset是否是可以被接受的

如果有任何问题或者疑问,请查阅accepts的附加文档

req.acceptsLanguage(lang)

检查给定的 lang 是否为可接受的

如果有任何问题或者疑问,请查阅accepts的附加文档

req.is(type)

检查提交进来的请求是否包含”Content-Type”头字段和他匹配的给定的mime type

 
 // With Content-Type: text/html; charset=utf-8
req.is('html');
req.is('text/html');
req.is('text/*');
// => true
// When Content-Type is application/json
req.is('json');
req.is('application/json');
req.is('application/*');
// => true
req.is('html');
// => false

如果有任何问题或者疑问,请查阅 type-is 的附加文档

req.ip

返回远程地址,或者在反向代理启用时返回上游ip地址。

 
  req.ip
//=> 127.0.0.1

req.ips

当反向代理模式开启时,解析 “X-Forwarded-For” ip地址列表并返回一个数组,否则返回空数组。例如,如果一个值为”client,proxy1,proxy2″你将会收到数组["client","proxy1","proxy2"]这里可以看出”proxy2″是最远的下游地址。

req.path

返回请求的URL路径名。

 
 //example com/users?sort=desc
req.path
// =>"/users"

req.host

返回从“Host”请求内取出的主机名,但是不包含端口号。

 
  //Host: "example.com:3000"
req.host
//=> "example.com"

req.fresh

检查请求是否是新的 – 通过对Last-Modified或者 ETag进行匹配,来标明这个资源是不是”新的”。

 
     req.fresh
//=>true

req.stale

检查这个请求是不是旧的 – 如果Last-Modified 或者 ETag 不匹配,标明这个资源是旧的。

 
     req.stale
//=>true

req.xhr

检查请求头里是否有”X-Requested-With”这样的字段并且值为”XMLHttpRequest”(jQuery 等)请求时会设置这个头

 
     req.xhr
//=> true

req.protocol

返回请求协议字符串 “http”或者”https”当请求为TLS时。当被启用反向代理时,”X-Forwarded-Proto” 请求头将会被信任。如果你运行一个支持https协议的反向代理,那么这个是会被支持的。

 
     req.protocol
//=>"http"

req.secure

检查TLS连接是否已经被建立。下面是一段简写

 
     'https' == req.protocol

req.subdomains

返回子域名数组

 
 //Host:"tobi.ferrets.example.com"
req.subdomains
// =>['ferrets','tobi']

req.originalUrl

这个属性很像req.url,然而,他保留了原始请求的url,允许你在做内部路由的时候自由的重写 req.url。例如,app.use()会重写 req.url 为挂载点

 
     // GET /search?q=something
req.originalUrl
//=> '/search?q=something'

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

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

  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 3--- Response篇

    相关阅读: 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 cheerio request爬虫

    const express = require('express') const cheerio = require('cheerio') const request = require(" ...

  8. NodeJS+Express+MongoDB

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

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

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

随机推荐

  1. Android消息推送完美方案[转]

    转自 Android消息推送完美方案 推送功能在手机应用开发中越来越重要,已经成为手机开发的必须.在Android应用开发中,由于众所周知的原因,Android消息推送我们不得不大费周折.本文就是用来 ...

  2. CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。

    firewall:systemctl start firewalld.service#启动firewallsystemctl stop firewalld.service#停止firewallsyst ...

  3. ajax向前台输出二维数组 并解析

    最近在弄一个售后数据统计的功能,里边需要统计特定时期内各种客户.机型的分布比例,单单table来计算并显示很死板(一点也不酷) 于是决定用jquery插件flot并通过ajax传输数据 :flot的折 ...

  4. Concurrency Series 1

    Difference between Processes and Threads Processes A process has a self-contained execution environm ...

  5. hdu 5443 The Water Problem

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5443 The Water Problem Description In Land waterless, ...

  6. hdu 2091 空心三角形

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2091 空心三角形 Description 把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为 ...

  7. swift学习初步(四)-- 函数

    好了,让我们开始接着前几天写的系列博客开始今天的这篇博客.在swift里面如果你需要定义一个方法的话,你需要使用关键字:func,请看下面的这段代码: func sayHello(name:Strin ...

  8. 初识java之Mina(一)

    Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于 TCP/IP.UDP/IP协议栈的通信框架(当然,也可以提供 JAVA 对象的序列化服务.虚拟机管道通信服务等) ...

  9. iOSReachability判断网络连接状态

    // //  NetStateManage.h // //  Created by miniu on 15/11/24. //  Copyright © 2015年 mini. All rights ...

  10. 未能加载文件或程序集“System.Web.Razor”或它的某一个依赖项。文件或目录损坏且无法读取。

    “/”应用程序中的服务器错误. 未能加载文件或程序集“System.Web.Razor”或它的某一个依赖项.文件或目录损坏且无法读取. (异常来自 HRESULT:0x80070570) 说明: 执行 ...