首页 > 解决方案 > react应用中的操作响应状态码

问题描述

我是 react.js/express.js 的新手,需要一些帮助。

我有两台服务器: http: //192.168.10.10 :5000 - 后端,由 express.js 处理; http://192.168.10.10:5001 - 前端客户端,反应;

它完美地工作。

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 显示:Sorry, not found。但是 HTTP 状态码没有改变——这200 OK很正常,因为 react js 不能这样做。但是 expressjs 可以。

在反应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'));

标签: node.jsreactjsreact-router

解决方案


您可以给路线 a status

<Route component={Page404} status={404} />

推荐阅读