我是react.js/express.js的新手,需要一些帮助。
我有两台服务器: http://192.168.10.10:5000 - 后端,由express.js处理; http://192.168.10.10:5001 - 前端客户端,使用react;
它完美地工作了。
在react
中,我制作了SPA
应用程序,并且我正在尝试制作简单的pageNotFound
组件。
构建起来很容易:
<Switch>
<Route exact path="/test1" component={Component1}/>
<Route exact path="/test2" component {Component2}/>
<Route exact path="/test3" component={Component3}/>
<Route component={Page404}/>
</Switch>
当我的网址不匹配时,它有效:/test999 显示:抱歉,未找到
。但是 HTTP 状态代码没有改变 - 它是 200 OK
这是正常的,因为 React js 无法做到这一点。但expressjs可以。
在react package.json文件中:
"proxy": "http://192.168.10.10:5000"
- 这意味着它将代理请求到后端。当我写下类似的内容时,它也有效:
axios.get('/api/getsomething')...
当他找不到与我的请求匹配的路由时,后端也会处理404
。
所以我的问题是:为什么http://192.168.10.10:5001/test999返回状态200
?按照我的逻辑,请求必须代理到后端并返回 404
。也许我做错了什么?
那我该如何解决呢?
非常感谢。
服务器.js
const express = require('express');
const app = express();
const port = 5000;
app.get('/api/getsomething',(req,res) => {
const something= [
{id:1, message:'Hello'},
];
res.json(something);
});
app.use(function(req, res, next) {
res.status(404).send('Sorry, not found');
});
app.listen(port, () => console.log('server started'));
最佳答案
您可以为路线指定一个状态
:
<Route component={Page404} status={404} />
关于node.js - React应用程序中的操作响应状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58821754/