扩展node.js请求对象

Sandelius

如何扩展node.js请求对象并向其添加自定义方法和属性?我需要能够this从节点的请求进行访问,因为我将需要url等。

cPu1

传递给http.createServer回调的请求对象是一个http.IncomingMessage对象。要增加请求对象,您可以向添加方法http.IncomingMessage.prototype

var http = require('http');

http.IncomingMessage.prototype.userAgent = function () {
  return this.headers['user-agent'];
}

要添加访问器属性:

Object.defineProperty(http.IncomingMessage.prototype, 'userAgent', {
  get: function () {
    return this.headers['user-agent'];
  }
}

如果现有对象的构造方法中定义了其方法,则可以使用委托:

function AugmentedRequest() { 
  this.userAgent = function () {}
}

AugmentedRequest.call(request); //request now has a userAgent method

不涉及增加request对象的另一种方法是使用合成。

var extendedRequest = {
  get userAgent() {
    this.request.headers['user-agent'];
  }
}

createServerCallback(function (req, res) {
  var request = Object.create(extendedRequest);
  request.request = req;
});

此技术在koa中大量使用以包装Node对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

扩展node.js请求对象

来自分类Dev

修改Node.js请求对象参数

来自分类Dev

Node.JS:从JSON对象请求键值

来自分类Dev

在node.js中扩展TypeScript全局对象

来自分类Dev

无法使用Express从Node.js请求对象访问文件

来自分类Dev

在Middlewares-Node.JS中修改请求对象

来自分类Dev

从Node.js中的多部分请求检索JSON对象

来自分类Dev

在Middlewares-Node.JS中修改请求对象

来自分类Dev

从本地主机读取node.js中的请求对象

来自分类Dev

在node.js中,如何获取请求对象的协议?

来自分类Dev

在 node.js 中获取请求对象数组

来自分类Dev

使用OOP扩展Node.js模块

来自分类Dev

node.js扩展foo不是函数

来自分类Dev

Chrome 扩展:向 node.js 服务器发出 http 请求,发送 cookie 凭据(CORS)

来自分类Dev

NODE JS取消请求

来自分类Dev

如何在Node.js API中扩展/修改对象?

来自分类Dev

如何使用node.js中的请求以多部分形式发送对象

来自分类Dev

Node.js中的请求对象是否包含任何navigator.userAgent类型的信息?

来自分类Dev

如何使用Node JS向浏览器发送多个请求(?)对象

来自分类Dev

模拟请求对象不适用于node.js中的测试

来自分类Dev

在Node.js中扩展类的简单方法

来自分类Dev

在node.js中扩展类的不同方法

来自分类Dev

Node.js获取文件扩展名

来自分类Dev

无法使用Typescript扩展node.js全局

来自分类Dev

Node.js获取文件扩展名

来自分类Dev

Node.js扩展压缩的ISO日期时间

来自分类Dev

gzip 压缩中的 Node.js 文件扩展名

来自分类Dev

Node.js GET请求

来自分类Dev

Node js对象导出