【问题标题】:How to do Node js redirection as HTTP POST? [duplicate]如何将 Node js 重定向为 HTTP POST? [复制]
【发布时间】:2017-10-04 14:10:23
【问题描述】:

我已配置 app.js 将所有请求重定向到我的 controller.js。 以下是我的 controller.js 外观示例。

router.all('/Controller/:id', controller);
function controller(req, res){
    //db check using the id mentioned in the url. And gets some values.
    //Say it is stored in data variable.
    var URL = "SOMEURL";
    if(data != null){
        if(data.METHOD == "POST"){
            // needs to redirect as HTTP POST with URL.
        }else{
            res.redirect(URL);
        }
    }else{
        console.log('No Data Found to redirect');
    }
}

如果 data.METHODPOST,您可以看到我需要重定向到特定的 URL。我尝试了 res.redirect,但它给出的只是一个 GET 请求。那么如何将 HTTP POST 重定向到特定的 url?请提供您的想法。

感谢和问候。

【问题讨论】:

  • 从我的脑海中,我会说您需要在该方法上创建一个新的发布请求,并将响应返回给调用者,也许还有其他方法.. 或者也许我'我错了
  • 为什么要重定向?你有数据,你已经知道你需要做什么。为什么不直接将您想要执行的代码分解为服务器上的一个函数,让您的其他路由都可以使用它并在此处调用它?看起来你正在做一个毫无意义的重定向。

标签: javascript node.js express


【解决方案1】:

最好为每个条件设置单独的方法。

一个用于 GET,一个用于 POST、PUT 等。这样您就可以拥有可测试的代码,而不会违反单一责任原则

router.get('/Controller/:id', controller.GetData);
router.put('/Controller/', controller.UpdateData);
router.post('/Controller/', controller.SaveData);

对于 put 和 post,您可以在 request.body 中传递数据

【讨论】:

  • 是的,我明白了。但我想做的就是从控制器重定向到一个 url。那我该怎么做呢?
  • 你可以使用请求模块..npmjs.com/package/request
【解决方案2】:

谢谢大家..

找到我的答案。

我需要做的就是重定向 307 HTTP 状态。以下将重定向到帖子路由器。

res.redirect(307, URL);

【讨论】:

    猜你喜欢
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    相关资源
    最近更新 更多