[英]req.query is empty and req.url is not complete using react router and express
當頁面 URL 是 http://localhost:3000/verify?token=something 並且我使用 fetch 發出 GET 請求時,當我訪問服務器時,req.url 是“/verify”而不是“verify?token=something” , req.query 對象也是空的
客戶端在端口 3000 上運行,服務器在端口 5000 上運行。我在客戶端的 package.json 中使用代理。
一直在撓我的頭一段時間,無法弄清楚這一點,所以任何幫助將不勝感激
客戶端代碼:
應用程序.js
import {BrowserRouter as Router, Route} from "react-router-dom";
function App() {
return (
<Router>
<Navbar/>
<Route exact path="/" component={Home}/>
<UnPrivateRoute path="/verify" component={Verify}/>
</Router>
);
}
export default App;
驗證.jsx
import AuthService from "../api/auth";
const Verify = () => {
const [message,setMessage] = useState(null);
const [confirm,setConfirm] = useState(true);
if(confirm){
AuthService.verify().then(data =>{
const {message} = data;
setMessage(message);
});
setConfirm(false);
}
return(
<div className="container">
<h1>Verify</h1>
{message ? <Message message={message}/> : null}
</div>
)
}
export default Verify;
認證.js
export default {
verify: () => {
return fetch("/user/verify")
.then(res => res.json())
.then(data => data);
}
}
服務器代碼:
用戶.js
userRouter.get("/verify", (req, res) => {
console.log(req.url);
console.log(req.query);
});
發生這種情況是因為到服務器的請求 url 不包含任何查詢參數。 像這樣更改 fetch 方法中寫入的 url:
身份驗證.js
export default {
verify: (something) => { //where something is the value of token
return fetch('/user/verify?token='+something)
.then(res => res.json())
.then(data => data);
}
}
還要傳遞您正在調用它的東西的值,如下所示:
AuthService.verify(something).then(data =>{
const {message} = data;
setMessage(message);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.