gpt4 book ai didi

node.js - 当在nodejs中运行http请求来测试我的rest api时,它停止了,为什么?

转载 作者:太空宇宙 更新时间:2023-11-04 02:29:32 24 4
gpt4 key购买 nike

我有一个 REST API 工作得很好,现在我不再用 postman 手动测试它,而是编写了 http 请求来测试 CRUD 操作。我知道所有请求都有效,因为它们给我的状态代码为 200。

我的问题是,当运行测试命令行时,它会显示它几乎运行了所有测试,但不会超出某些 GET 请求(即使我在代码前面的相同类型的请求中使用了相同的代码。

当我注释掉卡住的 GET 请求时,它会毫无问题地运行该请求之后的请求。

这是我的 GET 请求的代码:

var options = {
host: 'localhost',
port: 4000,
path: '/api/services/00001/method/01/args/01'
};
http.get(options, function(res) {
console.log("Got response: " + res.statusCode+"\nGET argument 01 for user 00001 method 01.\n\n ");
}).on('error', function(e) {
console.log("Got error: " + e.message);
});

我是否遗漏了一些偶尔会导致代码停止运行的内容?如有任何帮助,我们将不胜感激。

如果需要,我还可以为其他操作添加代码(POST、PUT、DELETE)。

在没有任何注释的情况下运行我的整个代码后,我意识到它也在我的第二个删除请求中停止,代码如下:

var options = {
host: 'localhost',
port: 4000,
path: '/api/services/00001/method/01',
method: 'DELETE'
};

http.get(options, function(res) {
console.log("Got response: " + res.statusCode +"\nDELETE method 01 for user 00001.\n\n ");
}).on('error', function(e) {
console.log("Got error: " + e.message);
});

最佳答案

解决方案可以是以下之一或两者:

  • 在请求选项中设置agent: false。这可以防止请求使用全局 http 代理套接字池,这意味着该请求每次都会获得自己的新套接字。我见过奇怪的事情,由于 Node 的 http 代理实现,请求永远不会启动。您应该注意的一件事是您的操作系统用户(进程正在运行的用户)的文件描述符限制。如果您使用 agent: false 执行大量并发请求,则可能需要提高操作系统限制。

  • 只要您不关心,请在请求回调中使用 res.resume() 来从服务器中排出任何响应数据。这样做可以确保 http 代理套接字池中的套接字可供另一个请求使用。

关于node.js - 当在nodejs中运行http请求来测试我的rest api时,它停止了,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28092423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com