当前位置: 首页 > 面试题库 >

修改Node.js请求对象参数

丁正阳
2023-03-14
问题内容

因此,像往常一样,我尝试在SO上找到这个问题,但还是没有运气。

我知道答案是“是的,您可以修改req对象”,但是关于req对象参数什么也没说。

例如,以下代码将引发错误:

app.get('/search', function(req, res) {
   req.param('q') = "something";
});

错误:

ReferenceError: Invalid left-hand side in assignment

我想这与没有“ SET”方法的属性有关,或者与之类似。

在某些情况下可以派上用场。

  1. 一种将快速链接转换为完整请求并代理这些请求的服务。
  2. 只需修改参数,然后再将其发送给您不想修改的其他功能。

问题 是,有没有办法修改req对象参数?


问题答案:

而不是:

req.param('q') = "something";

您需要使用:

req.params.q = "something";

第一个尝试在param函数的返回值上设置一个值,而不是参数本身。

值得注意的是,req.param()方法从req.bodyreq.params并按req.query该顺序一次检索所有值,但是要设置一个值,您需要指定这三个值中的哪一个:

req.body.q = "something";
// now: req.param('q') === "something"
req.query.r = "something else";
// now: req.param('r') === "something else"

也就是说,除非您要永久修改从客户端提交的内容,否则最好将其放在其他位置,以免被您使用的任何第三方模块误认为来自客户端的输入。



 类似资料:
  • 问题内容: 在express.js中,我想在请求对象上为我的每个URI侦听器提供一个附加属性。这将提供协议,主机名和端口号。例如: 我当然可以连接req.protocol,req.host,并以某种方式绕过我的每个URI侦听器的端口号(似乎是req对象中缺少的端口号),但是我希望能够在其中进行他们所有人都可以访问此信息的方式。 此外,主机名在请求之间可能会有所不同(计算机具有多个接口),因此在启动

  • 自1.14.0开始,zuul网关支持动态修改请求参数。即在网关修改客户端传递过来的参数,然后发送到微服务端。 客户端参数{"name": "jim"} --> zuul中修改为{"name": "Lucy"} --> 微服务端将收到{"name": "Lucy"} 使用场景:客户端请求参数经过加密,在网关解密后,再次发送明文参数给微服务端 如何使用 在网关springboot启动函数中添加如下代

  • 一、修改请求 在上一步中,我们恢复了截获的请求,没有进行任何更改。当我们在将请求转发到目的地之前修改被拦截的请求时,就会发挥拦截的全部功能。您可以继续上一步中的窗口和已配置的拦截规则。 欢迎来到mitmproxy教程。在本课程中,我们将介绍对截获请求的修改。 点击查看教程 二、影片内容 欢迎来到mitmproxy教程。在本课程中,我们将介绍对截获请求的修改。 我们配置和使用与上一教程中相同的拦截规

  • 我需要执行修改后的请求,但我有一个问题,我不能很好地理解。在尝试使用代码之前,我用Postman和request测试了api调用,如下所示: 下面是我的android代码: 编辑请求: null

  • 问题内容: 现有的Web应用程序正在Tomcat 4.1上运行。页面存在XSS问题,但是我无法修改源代码。我决定编写一个servlet过滤器以在页面看到参数之前对其进行清理。 我想这样编写一个Filter类: 但是ServletRequest.setParameter不存在。 在将请求向下传递之前,如何更改请求参数的值? 问题答案: 如前所述,没有setParameter方法。这是故意的,因为该类

  • 当前的请求对象由think\Request类负责,在很多场合下并不需要实例化调用,通常使用依赖注入即可。在其它场合(例如模板输出等)则可以使用think\facade\Request静态类操作。 [TOC=2,3] 请求对象调用 在控制器中通常情况下有两种方式进行依赖注入。 构造方法注入 <?php namespace app\index\controller; use think\Reque