fetch的/api/register与Express中post同路径接口的关系及运行机制是什么
问题解答
1. 两处/api/register的执行先后顺序
执行顺序为前端先发起请求,后端后匹配执行逻辑:
- 用户点击提交按钮后,前端首先触发
fetch('/api/register', {method: 'POST', ...})逻辑,主动向后端服务地址发起对应路径的POST请求 - 后端Express服务全程在监听端口的入站请求,当收到路径匹配
/api/register的POST请求后,才会执行app.post('/api/register')中定义的回调逻辑,你观察到的服务端打印账号信息的操作就发生在这个阶段。
2. 该路径是否为自定义的前后端通信路径
该路径完全是开发者自定义的通信路径。/api/register没有强制的官方规范要求,是开发者根据注册业务的需求自行定义的接口标识,只要前后端约定好统一使用这个路径做注册请求的通信,就可以正常工作。实际开发中你也可以把它改成/user/signup或者其他任意符合URL命名规则的字符串,只要前后端使用的路径保持一致即可。
3. 背后的具体运行逻辑
整个请求的完整链路如下:
- 程序启动阶段:Express服务先完成启动,监听指定的服务端口(通常是3000、8080这类常用端口),同时完成所有路由的注册,
/api/register的POST路由会被Express提前登记到路由匹配表中等待匹配。 - 前端触发阶段:用户在页面填写用户名密码后点击提交按钮,触发绑定的提交事件回调,回调中执行fetch逻辑,浏览器按照HTTP协议规范,把请求方法、请求路径
/api/register、序列化后的用户名密码请求体、请求头等信息封装成HTTP请求包,发送给后端服务对应的地址。 - 后端处理阶段:后端收到HTTP请求后,Express框架先解析请求内容,提取请求方法和请求路径,遍历已经注册的路由列表,匹配到
app.post('/api/register')对应的处理回调后,执行回调中的逻辑:解析请求体中的用户名密码,执行终端打印操作,之后可继续执行数据库写入、返回响应等后续逻辑。 - 响应返回阶段:后端处理完成后返回HTTP响应给前端,前端fetch的Promise状态变为完成态,可继续处理后端返回的结果。
内容的提问来源于stack exchange,提问作者user13088719
相关产品推荐
相关产品推荐

