使用fetch是否需指定URL端点?SPA场景下Express路由疑问
关于Fetch请求与Express路由的疑问解答
先直接给你明确结论:你不需要特意告知服务器请求来自哪个SPA页面,Express也不会自动根据当前页面的URL来路由你的Fetch请求。具体细节我给你拆解清楚:
Fetch请求的目标URL是完全独立的,和你当前所在的SPA页面路径没有直接关联
举个例子:你在test.com/cow这个前端路由页面,调用fetch('/')时,浏览器会向test.com/发送请求,Express会匹配后端定义的GET /路由;而如果调用fetch('/cow'),才会触发后端的GET /cow路由。不管你在哪个SPA页面,Fetch的目标URL写的是什么,就请求对应的后端端点。SPA的前端路由和后端路由是两套独立的系统
你当前的test.com/cow通常是前端路由(比如用React Router、Vue Router实现的),后端Express可能根本不知道这个路径的存在——除非你配置了通配路由(比如app.get('*', ...))来返回SPA的入口HTML文件。后端路由只认Fetch请求里明确指定的URL,不会自动关联当前页面的前端路径。如果需要让后端知道请求来自哪个页面,得手动传递信息
要是业务逻辑需要后端了解当前用户在哪个SPA页面,你可以通过自定义请求头或者URL参数来传递:// 通过自定义请求头传递 fetch('/', { headers: { 'X-Current-Page': '/cow' } })然后在Express后端里,你可以通过
req.headers['x-current-page']获取这个值。
内容的提问来源于stack exchange,提问作者PurplePanda
相关产品推荐
相关产品推荐

