在表单提交时,服务器是否“直接”接收或监听特定位置的更改?

On form submit, does the server ‘directly’ receive req or listen to changes in a particular place?

提问人:mobied 提问时间:3/26/2021 最后编辑:mobied 更新时间:3/26/2021 访问量:240

问:

如果我的问题听起来很幼稚,请原谅我。我在谷歌和几个论坛上进行了研究,但找不到任何清楚的东西。

这是我的困境,

步骤 1 -> Node.js 服务器正在侦听

第 2 步 -> 页面上的用户“/new-users”。(POST, '/signup-controller)

第 3 步(也许是第 4 步) -> 我想知道在服务器决定将数据带到哪里之前,这里会发生什么。

在步骤 1 中,服务器是否正在侦听本地存储以查看是否有任何新请求?

或者,它是否“直接”在步骤 3 中接收请求?

我一直认为服务器只是监听变化。这意味着它不会从字面上“接收”req或res数据。

非常感谢您阅读我的问题,我期待任何反馈。

编辑:澄清一下,客户端是直接走到服务器并交出数据,还是客户端将数据存储在某个“储物柜”或“位置”,并且服务器注意到储物柜已满,从而触发后续事件?

JavaScript HTML node.js Forms 服务器端

评论

0赞 Robert Kawecki 3/26/2021
问题不清楚,你能改写一下你在问什么吗?
0赞 Aniket Kariya 3/26/2021
它不监听更改。它侦听请求。当用户请求任何页面或发送任何数据时,该请求将带有适当的数据发送到服务器。服务器会做出相应的响应,并根据请求处理数据。
0赞 mobied 3/26/2021
谢谢Anitket。@Robert,因为我没有在深层次上理解 severs,请允许我抽象地说。提交后,表单中的数据是否会被临时存储在某个地方,服务器注意到有一个新请求。或者客户端直接带着数据走到服务器上并交出数据。

答:

0赞 Shailendra 3/26/2021 #1

不,它将直接接收请求数据,如果您在节点中使用像 express 这样的框架,那么您可以使用中间件来验证或检查请求数据并继续前进

评论

0赞 mobied 3/26/2021
感谢您分享知识!
0赞 Joe's wiZa T 3/26/2021 #2

服务器只侦听请求,不侦听响应 当它找到一个请求 (req) 时,使用此请求进行操作,并基于必须提供包含数据、文件、错误的响应 (res) 的 OD。无论什么。。

0赞 olekeh 3/26/2021 #3

服务器接收 POST og GET(取决于 FORM 标签中的 METHOD 属性) - 如果要实现一些逻辑来决定将数据放在哪里,则应由服务器完成,分析数据。隐藏的输入标签 (Type=“hidden”) 可以帮助提供信息。例如,一个隐藏的输入标签说“NEW”或“EDIT”和“ID”。

改用 AJAX 方法,可以在最终 POST 之前与服务器协商。

hth。 奥莱·霍恩内斯

评论

0赞 mobied 3/26/2021
谢谢伙计,我很欣赏你的答案。因此,这意味着客户端直接走到服务器面前并将表单数据交给他?是的,我只是在谈论标准的发布/获取请求。谢谢
0赞 Jie Zdok 3/26/2021 #4

在步骤 1 中,服务器是否正在侦听本地存储以查看是否有任何新请求?不,服务器不监听本地存储,它监听服务器端口。并等待请求。

它是否“直接”接收步骤 3 中的请求?当客户端发送请求时,服务器将收到,在您的情况下,步骤 2

0赞 Robert Kawecki 3/26/2021 #5

表单中的数据被格式化为 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\nreq

尽管每个步骤(在客户端、交换机、中间路由器、服务器内核以及最后的服务器进程)都涉及一定量的缓冲,但通信是“直接”的 - 一台主机上的一个进程与另一台主机上的另一个进程进行通信,而不涉及磁盘。

评论

0赞 mobied 3/26/2021
你是一个传奇!这正是我一直在寻找的答案。谢谢你的流畅解释,我真的很欣赏某些事情的剪裁和措辞。你在跟我说话哈哈!!你让我度过了愉快的一天。P.S. 如果你写文章、辅导或做类似的事情,请告诉我。我也很乐意付钱!
0赞 Robert Kawecki 3/26/2021
@mobied 那里有很多信息,也有很多很好的研讨会。我个人不做辅导,尽管我们经营着一个名为 WarsawJS 的小型(~3000 名成员)非营利性社区,该社区每月举办一次讲座(在 YouTube 上直播)和在线研讨会,您可以在其中提问、练习和学习。如果有需求,有时会有一个英语小组。以下是我们的一位成员在低级别解释 HTTP 的示例演讲:youtube.com/watch?v=D1wykjTstr4