资讯专栏INFORMATION COLUMN

Node.js学习之路25——Express的request对象

cocopeak / 2870人阅读

摘要:对象表示请求并且具有请求查询字符串参数正文标题头等属性对应用程序实例的引用保存了很多对使用中间件的应用程序实例的引用挂载在路由实例上的路径请求主体和和包含在请求正文中提交的数据的键值对默认情况下它是未定义的当您使用体解析中间件如和时将被填

2. request
req对象表示http请求,并且具有请求查询字符串,参数,正文,http标题头等属性
app.get("/user/:id", (req, res) => {
    res.send("user " + req.params.id);
});
2.1 对应用程序实例的引用

req.app()

app保存了很多对使用中间件的express应用程序实例的引用

// one.js
module.exports = function (req, res) {
    res.send("The views directory is " + req.app.get("views"))
}
// app.js
app.get("/one", require("./one.js"));
2.2 挂载在路由实例上的URL路径

req.baseUrl

let greet = express.Router();

greet.get("/one", (req, res) => {
    console.log(req.baseUrl);// /greet
    res.send("hello")
});

app.use("/greet", greet);
2.3 请求主体和cookies

req.bodyreq.cookies

包含在请求正文中提交的数据的键值对,默认情况下,它是未定义的,当您使用体解析中间件(如body-parsermulter)时,将被填充

const express = require("express");
const bodyParser = require("body-parser");
const cookieParser = require("cookie-parser")
let app = express();

app.use(bodyParser.json());// parsing application/json
app.use(bodyParser.urlencoded({ extended: true }));// parsing application/x-www-form-urlencoded
app.use(cookieParser())
app.post("/", (req, res) => {
    console.log("Cookies: ", req.cookies);
    console.log("Signed Cookies: ", req.signedCookies);
    console.log("req.body", req.body);
    res.json(req.body);
});

app.post("/", (req, res) => {
    console.log(req.body);
    res.json(req.body);
});

app.listen(3000);
2.4 主机信息

fresh,hostname,ip,ips,protocol

const express = require("express");
const bodyParser = require("body-parser");
const cookieParser = require("cookie-parser")
let app = express();

app.use(bodyParser.json());// parsing application/json
app.use(bodyParser.urlencoded({ extended: true }));// parsing application/x-www-form-urlencoded
app.use(cookieParser())

app.get("/files/download/:user", (req, res) => {
    console.log("req.fresh:", req.fresh);
    console.log("req.stale:", req.stale);
    console.log("req.hostname:", req.hostname);
    console.log("req.ip:", req.ip);
    console.log("req.ips:", req.ips);
    console.log("req.protocol:", req.protocol);
    console.log("req.url:", req.url);
    console.log("req.originalUrl:", req.originalUrl);
    console.log("req.xhr:", req.xhr);
    console.log("req.params:", req.params);
    console.log("req.path:", req.path);
    res.send(req.body);
});

app.listen(3000);
/***
request url: http://localhost:1111/files/download/mark
req.fresh: false
req.stale: true
req.hostname: localhost
req.ip: 127.0.0.1
req.ips: []
req.protocol: http
req.url: /files/download/mark// req.url是javascript的http模块的属性,不是Express的
req.originalUrl: /files/download/mark
req.subdomains: []
req.xhr: false
req.params: { user: "mark" }
req.path: /files/download/mark
***/
2.5 请求路由

req.route

app.get("/user/:id?", (req, res) => {
    console.log(req.route);
    res.send("send get message route")
});
/***
req.route: Route {
  path: "/files/download/:user",
  stack:
   [ Layer {
       handle: [Function],
       name: "",
       params: undefined,
       path: undefined,
       keys: [],
       regexp: /^/?$/i,
       method: "get" } ],
  methods: { get: true } }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/93058.html

相关文章

  • Node.js学习之路27——Expressrouter对象

    摘要:对象大小写敏感默认不敏感保留父路由器的必需参数值如果父项和子项具有冲突的参数名称则该子项的值将优先激活严格路由默认禁用禁用之后正常访问但是不可以访问全部调用或者或者实际上就是的各种请求方法使用路由使用模块方法 Router([options]) let router = express.Router([options]); options对象 caseSensitive,大小写敏...

    NicolasHe 评论0 收藏0
  • Node.js学习之路24——Express框架app对象

    1.express() 基于Node.js平台,快速、开放、极简的web开发框架。 创建一个Express应用.express()是一个由express模块导出的入口top-level函数. const express = require(express); let app = express(); 1.1 静态资源管理 express.static(root, [options]) expr...

    smallStone 评论0 收藏0
  • Node.js学习之路26——Expressresponse对象

    摘要:如果包含字符则将设置为。添加字段到不同的响应头将该字段添加到不同的响应标头如果它尚未存在。 3. response对象 3.1 是否发送了响应头 res.headersSent布尔属性,app是否发送了httpheaders const express = require(express); const bodyParser = require(body-parser); cons...

    davidac 评论0 收藏0
  • Node.js学习之路13——HTTP与HTTPS

    摘要:和的区别服务器使用协议服务器使用协议服务器需要向证书授权中心申请证书一般免费证书何绍需要交费在少许读客户端有要求的情况下也会要求客户端使用证书服务器于客户端之间传输的是明文数据而服务器于客户端之间传输的是经过安全加密后的密文数据服务器通常使 4. HTTP和HTTPS的区别 HTTPS服务器使用HTTPS协议,HTTP服务器使用HTTP协议. HTTPS服务器需要向证书授权(Ce...

    lei___ 评论0 收藏0
  • Node.js学习之路23——Node.js利用mongoose连接mongodb数据库

    摘要:类比一下你有一个巨型停车场,里边分了不同的停车区集合,这里的,每个停车区可以停很多车下文提到的,相当于每个数据集合里边可以有很多张数据表。 Node.js利用mongoose连接mongodb数据库 Node.js连接mongodb数据库有很多种方法,通过mongoose模块引入是其中的一个方法 代码组织结构 |---|根目录 |---|---|connect.js(mongoose测...

    ssshooter 评论0 收藏0

发表评论

0条评论

cocopeak

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<