请求和响应来自哪里?

时间:2017-03-14 23:05:08

标签: javascript node.js express

在第2行,有'request'和'response'参数要接收,但是在第6行,在createServer调用中,我传递了请求处理函数,没有参数。如果我没有在调用时传递它们,这两个特定参数来自哪里?

var http = require("http");
function requestHandler(request, response) {
  console.log();
  response.end();
}
var server = http.createServer(requestHandler);
server.listen(3000);

2 个答案:

答案 0 :(得分:0)

// importing the http module
var http = require("http"); 

// defining what happens when a request hit the server (a.k.a callback function)
function requestHandler(request, response) {
  console.log();
  response.end();
}

// creating a server and linking the previously defined request handler.
var server = http.createServer(requestHandler);
server.listen(3000);

由于您已经定义了此处理程序作为参数及其作用所采用的内容,因此您只需提供函数的名称以将其链接到新创建的服务器。

换句话说,您将函数本身作为参数传递给createServer函数。函数是JavaScript中的第一类。

您在请求处理程序中命名的参数可帮助您读取请求并写入响应。

答案 1 :(得分:0)

Pragma: no-cache Access-Control-Allow-Origin: * Access-Control-Allow-Methods: PUT, GET, POST, OPTIONS Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept Access-Control-Max-Age: 86400 Transfer-Encoding: chunked Cache-Control: no-store, must-revalidate, no-cache, post-check=0, pre-check=0 Date: Wed, 15 Mar 2017 03:39:49 GMT Set-Cookie: PHPSESSID=1ng3l10lvrrovlmdbij5chv2f5; path=/ Server: Apache Content-Type: application/json Expires: Thu, 19 Nov 1981 08:52:00 GMT request参数来自实际调用请求处理程序的脚本。

节点服务器在监听3000端口时,会捕获请求,对它们进行一些内部管理(我假设,我不知道那里发生了什么),创建响应对象,并调用处理程序在允许它返回内容的上下文中。

这是一个非常简单的无关同步例子。在定义response时,我们只定义一个函数来记录传递的内容。然后将该函数传递给callback,它将使用它来完成日志。

usesCallback