使用React Router的Proxy API请求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用React Router的Proxy API请求相关的知识,希望对你有一定的参考价值。

我正在尝试建立一个代理来处理GET和POST请求。 我已经做了很多次而没有在以前的react应用程序中使用react-router,并且它的工作原理很完美,但是由于此应用程序使用react-router导致失败。

代理不起作用,而是尝试在localhost域上进行调用:

ok: false
redirected: false
status: 500
statusText: "Internal Server Error"
url: "http://localhost:3001/api/call"

我没有对我的React Router做任何花哨的事情:

<Router history={history}>
    <Switch>
        <Route path="/" component={Home} />
        <Route path="about" component={About} />
    </Switch>
</Router>

这是代理(在setupProxy.js中):

const proxy = require('http-proxy-middleware');

module.exports = function(app) {
  app.use(proxy('/api/call', { target: "http://www.domain.com.au/", changeOrigin: true } ));
};

以下是使用方法示例:

add(data) {

    this.setState({button: "loading"})

    fetch('/api/call', {
        method: "POST",
        headers: {
            "Content-Type": "application/json"
        },
        body: JSON.stringify(data)
    })
    .then(res => this.setState({success: res.ok}))
    .catch(err => this.setState({success: false}))

}

使用react-router时,我是否需要做任何额外的工作才能使它正常工作?

答案

问题中的代码可以正常工作 。 当代理请求返回错误时,它将显示此错误来自本地主机,而不是来自代理URL。

以上是关于使用React Router的Proxy API请求的主要内容,如果未能解决你的问题,请参考以下文章

使用带有 React 的 Context API 的 react-router-dom 的意外输出

React中跨域问题的完美解决方案

带有 react-router /api 的 nginx 是 404 页面

使用 Passport + Facebook + Express + create-react-app + React-Router + 代理进行身份验证

Caddy reverse_proxy 和 React 路由器

多种解决react中跨域问题方案