据我了解,要正确使用 React Router 中的 browserHistory 对象,我们需要使用通配符*
路由,以便在每次刷新时向用户返回单页应用程序。当我的客户端 URL 与我的一个 api URL 相同时,这成为一个问题。
例如,假设我有一个名为example.com
的网站,并且该网站上的一个页面是 example.com/profile
。如果我刷新,预期的行为是它只会重新加载网站example.com
并正确路由到/profile
,因为通配符路由应该向客户端返回单页应用程序。这不起作用的地方是如果我有一个 API 路由/profile
,即 example.com/profile
. 现在,当用户刷新页面时,他们不会返回配置文件页面,而是从我的 API 返回 JSON 响应。
根据声明通配符路由的顺序,我可以在刷新时返回 API 响应,也可以在刷新时返回单页应用,但当 API URL 与客户端浏览器 URL 相同时,不能同时返回两者。
对这个问题有什么建议吗?我当前的解决方案是迁移我的所有 API 路由,以在它们前面附加/api/
。
确保您的客户端路由不会与您的 API 路由发生冲突,并且以 /api
前缀 API 路由是处理此问题的一种非常标准的方法。
确保它们不会发生冲突之外,没有真正的方法可以"解决"这个问题——各种解决方法可能是可能的,但如果路线明确,那么所有相关人员都会更加清楚。