【问题标题】:http.request vs http.createServerhttp.request 与 http.createServer
【发布时间】:2018-01-22 00:28:42
【问题描述】:

这行代码中的请求有什么区别:

http.createServer(function(request,response){. . .}

并在

中请求
http.request()

是否都向服务器发送了请求?

我是 node.js 的新手,如果我听起来很愚蠢,我很抱歉!

http.request() 是如何工作的?

http.request() 中,我们从另一个站点获取数据,但是为了从另一个站点获取数据,我们首先需要访问我们的站点然后发出请求?用一个简单的现实例子来解释它!

【问题讨论】:

  • 你在哪里找到 http.request() ?
  • http.createServer 用于创建一个可以在指定端口监听http请求并发送http响应的服务器
  • createServer() 侦听来自其他客户端的传入 http 连接。 http.request() 向另一台服务器发送出站 http 请求。

标签: node.js http httprequest


【解决方案1】:

http.request() 向另一个 HTTP 服务器发出请求。假设由于某种原因我想去下载 Stack Overflow 的主页...

http.request('https://stackoverflow.com/', (res) => {
  // ...
});

http.createServer()... 它创建一个 HTTP 服务器。也就是说,它将您的应用程序绑定到要侦听的套接字。当从某个地方或其他地方建立新连接时,它会处理该请求的底层 HTTP 协议,并要求您的应用程序通过回调的方式处理它。来自Node.js documentation

http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('okay');
});

这两种方法完全没有任何关系。 http.request() 用于向 HTTP 服务器发出请求。 http.createServer() 用于创建您自己的 HTTP 服务器。不要对回调感到困惑。

【讨论】:

  • 你能解释一下http.createServer(req,res)中的请求和响应参数吗?这些请求是什么?
  • 从其他 HTTP 客户端到您的服务器的请求。例如,如果您在浏览器中打开 Node.js 服务器的 URL,使用该示例代码,您会在浏览器中看到“okay”。 req 是请求对象,可以检查路径是什么等。 res 是用于控制发回内容的响应对象。我真的建议阅读文档并尝试其中的第一个示例:nodejs.org/api/synopsis.html#synopsis_example
  • 好的!通过使用 http.createServer 不需要将他们的网站托管在 GoDaddy.com 或 AWS 等其他服务器上,因为他们已经创建了自己的服务器?
  • @rohan 您需要将 Node.js 应用程序本身托管在某个地方。确实,如果您想要的只是静态 Web 托管,您应该使用为此构建的服务器,例如 Nginx。 Node.js 内置的 Web 服务器更适合 API 样式的服务器,其中可能有上游代理。将 Node.js 中的 HTTP 服务器视为 FastCGI 的替代品。您绝对可以直接将它用于客户端,但是如果您开始获得大量流量,它可以帮助使用下游的东西来平衡负载并处理终止到客户端。
【解决方案2】:

基于nodejs的源码(摘录如下),createServer只是一个实例化Server的辅助方法。

http.js的第1674行提取。

exports.Server = Server;


exports.createServer = function(requestListener) {
  return new Server(requestListener);
};

http.request() API 适用于您希望服务器代码充当客户端并从另一个站点请求内容并具有 GET, POST, PUT, DELETE 方法的情况。

【讨论】:

    猜你喜欢
    • 2018-02-28
    • 2017-01-09
    • 2015-07-04
    • 2016-09-19
    • 1970-01-01
    • 2012-05-03
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多