node.js - React应用程序中的操作响应状态代码

标签 node.js reactjs react-router

我是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/

相关文章:

node.js - 自定义 Node JS REPL 输入/输出流

reactjs - React 静态页面和动态页面之间的路由

reactjs - 无效的 Chai 属性 : toMatchSnapshot -- React. js Jest 测试

reactjs - 如何让Relay和React Routing正常工作?

javascript - Puppeteer: "The information you’ 重新提交不安全”

c# - 从 ASP.MVC 中基于 AOP 的身份验证到 NodeJS

node.js - 如何在docker中将主机代码挂载到容器中?

javascript - 使用 SVG 矩形单击处理程序更改 react 状态

javascript - 取消 React 中的前进按钮

reactjs - React-Router推送只改变URL,不导航