【问题标题】:Request to the an endpoint on the same server in express js在 express js 中向同一服务器上的端点请求
【发布时间】:2014-06-02 03:52:43
【问题描述】:

在快速 js 服务器上处理请求时,我想调用同一服务器上的端点以填充部分响应。有没有办法可以调用同一服务器上的端点?

类似:

app.handle("/abc", {
    headers: {
    },
    params: {
    },
    type: "GET"
}, function (err, resp) {});

【问题讨论】:

  • 我不认为这是重复的。在那个问题中,想法是将相同的 req, res 对象传递给新的调用。在这里,我想向同一台服务器发送一个新的 HTTP 请求,而不是实际进行 request.get 调用,而是使用框架。
  • 这不是一回事吗?
  • 不确定app.handle 是什么,但在这里使用命名函数并调用它可能会有所帮助。中间件的概念也是有原因的。
  • 我可以为我的目的做一些类似 request.get("localhost/abc") 的事情,但想看看框架是否提供任何替代方案。

标签: node.js express


【解决方案1】:

您可以使用 supertest 库(在应用程序中使用它,而不是在测试中使用它):

var handleRequest = require('supertest');

var request = handleRequest(app)[params.method](params.path)
.set('Accept', 'application/json')
.set(params.headers);

if (body) request.send(params.body);

request.end(function (err, resp) {
  console.log(resp.body);
});

其中params 是一个对象,其中包含您要处理的请求的参数,params.method 应该是小写的 HTTP 动词。

或者,您可以对请求和响应对象使用模拟并调用:

app.handle(reqMock, resMock, cb)

【讨论】:

    猜你喜欢
    • 2016-08-09
    • 2018-02-10
    • 1970-01-01
    • 2019-04-08
    • 2016-02-27
    • 1970-01-01
    • 2020-12-02
    • 2017-11-04
    • 2012-05-21
    相关资源
    最近更新 更多