提问人:mobied 提问时间:3/26/2021 最后编辑:mobied 更新时间:3/26/2021 访问量:240
在表单提交时,服务器是否“直接”接收或监听特定位置的更改?
On form submit, does the server ‘directly’ receive req or listen to changes in a particular place?
问:
如果我的问题听起来很幼稚,请原谅我。我在谷歌和几个论坛上进行了研究,但找不到任何清楚的东西。
这是我的困境,
步骤 1 -> Node.js 服务器正在侦听
第 2 步 -> 页面上的用户“/new-users”。(POST, '/signup-controller)
第 3 步(也许是第 4 步) -> 我想知道在服务器决定将数据带到哪里之前,这里会发生什么。
在步骤 1 中,服务器是否正在侦听本地存储以查看是否有任何新请求?
或者,它是否“直接”在步骤 3 中接收请求?
我一直认为服务器只是监听变化。这意味着它不会从字面上“接收”req或res数据。
非常感谢您阅读我的问题,我期待任何反馈。
编辑:澄清一下,客户端是直接走到服务器并交出数据,还是客户端将数据存储在某个“储物柜”或“位置”,并且服务器注意到储物柜已满,从而触发后续事件?
答:
不,它将直接接收请求数据,如果您在节点中使用像 express 这样的框架,那么您可以使用中间件来验证或检查请求数据并继续前进
评论
服务器只侦听请求,不侦听响应 当它找到一个请求 (req) 时,使用此请求进行操作,并基于必须提供包含数据、文件、错误的响应 (res) 的 OD。无论什么。。
服务器接收 POST og GET(取决于 FORM 标签中的 METHOD 属性) - 如果要实现一些逻辑来决定将数据放在哪里,则应由服务器完成,分析数据。隐藏的输入标签 (Type=“hidden”) 可以帮助提供信息。例如,一个隐藏的输入标签说“NEW”或“EDIT”和“ID”。
改用 AJAX 方法,可以在最终 POST 之前与服务器协商。
hth。 奥莱·霍恩内斯
评论
在步骤 1 中,服务器是否正在侦听本地存储以查看是否有任何新请求?不,服务器不监听本地存储,它监听服务器端口。并等待请求。
它是否“直接”接收步骤 3 中的请求?当客户端发送请求时,服务器将收到,在您的情况下,步骤 2
表单中的数据被格式化为 HTTP 请求,并通过网络直接发送到服务器。服务器从网络接收它,将其放入内存 (RAM) 中,然后调用处理程序。
TCP 连接(HTTP 建立在其基础上)传输字节序列 - 这就是为什么它被称为面向流的传输。这意味着您可以按照发送字节的相同顺序获取字节。HTTP 请求只是一段文本,如下所示:
POST /signup-controller HTTP/1.1
Host: localhost:8080
Content-Type: application/json
Content-Length: 17
{"hello":"world"}
请注意标题和正文之间的空行。这个间隙使Node.js(以及一般的 HTTP 服务器)能够快速确定请求是否要使用 POST 方法,而无需查看消息的其余部分!如果主体要大得多(JSON 的真正怪物),它不会有什么区别,因为标头仍然只是几行短行。localhost:8080/signup-controller
因此,Node.js只需要缓冲该部分,直到内存中的空行(正式地),。它到达了这一点,并且它知道调用您提供的 HTTP 请求处理程序函数。其余部分(在换行符之后)在对象中作为可读流提供。\r\n\r\n
req
尽管每个步骤(在客户端、交换机、中间路由器、服务器内核以及最后的服务器进程)都涉及一定量的缓冲,但通信是“直接”的 - 一台主机上的一个进程与另一台主机上的另一个进程进行通信,而不涉及磁盘。
评论