【发布时间】:2016-06-27 20:00:19
【问题描述】:
在服务器上,/api 下设置了仅 API 路径。
在客户端调用此路径时,react-router 接管并响应:
browser.js:49 Warning: [react-router] Location "/api/my_request" did not match any routes
我们如何让 react-router 绕过这一点,将请求发送到服务器?
更新:
这是发送请求的方式:
const sock = new SockJS('http://localhost:3030/api')
sock.onopen = () => {
console.log('open')
}
sock.onmessage = (e) => {
console.log('message', e.data)
}
sock.onclose = () => {
console.log('close')
}
sock.send('test')
【问题讨论】:
-
那是你在服务器上做的事情。如果
/api在向您发送数据的服务器上匹配,那么它将不会为您的具有您的 React 应用程序的 html 页面提供服务 -
@azium 问题是请求永远无法在服务器上匹配,因为 react-router 在客户端上是第一个匹配的。
-
我不是很关注你,你想提出什么样的要求?您是要加载另一个 html 页面还是什么? React 路由器只会尝试通过
history.push更改 url,因此常规链接或 ajax 请求不会触发 react-router -
@azium 响应将是我的情况下的 JSON 对象,但这并不重要。这个想法是让 react-router 通过 URL 请求而不是自己处理它。
-
所以这里有两种情况:用户复制和粘贴
yourserver.com/api/some_json,并且永远不会调用 react-router,因为您的服务器没有响应仅 JSON 的 html/javascript 包。或场景2)您已经在客户端应用程序上,并且您发出正常的get请求ajax.get('/api/some_json'),反应路由器不可能拦截
标签: javascript react-router sockjs