如何使用React处理两个不同的API?

时间:2018-06-06 17:47:28

标签: reactjs proxy cors package.json react-create-app

我需要在API中测试一个端点,但我已经使用了一个API,而且我不想更改针对新API的所有调用。

如果可能,我不知道事件,但是有哪些方法可以在proxy内定义多个package.json

有没有办法在package.json内传递身份验证密钥?

主服务器是本地服务器,带有代理:

"proxy": {
    "/api": {
      "target": "http://localhost:3001/proxy",
      "changeOrigin": true,
      "pathRewrite": {
        "^/api": ""
      }
    }
  },

目前,我使用axios进行API调用,项目以react-create-app启动。

2 个答案:

答案 0 :(得分:2)

在package.json中,您可以配置代理服务器,以根据如下所示的方式针对不同API请求的模式进行缓存,从而向不同目标发出API请求。

注意事项:

  • API模式的顺序很重要,通用请求(*)必须在最后。
  • 正则表达式应与完整的网址匹配,部分匹配对我来说会导致错误。

以下代码对我有用。有3种不同的服务器,其中一台用于报告请求,一台用于访问控制请求,其余所有请求都应转到第三台服务器。

"proxy": {
    "/report/.*(_get)": {
      "target": "http://localhost:8093/"
    },
    "/access/.*(_get)": {
      "target": "http://localhost:8091/"
    },
    "/.*": {
      "target": "https://egov-micro-dev.egovernments.org/",
      "changeOrigin": true
    }
  },

希望这会有所帮助。

答案 1 :(得分:1)

我发现解决方案在第一个代理之后添加了第二个代理,位于proxy内部并且我没有必要将标题放在package.json内,但@Chase DeAnda共享的链接确实是有趣,可以帮助谁感兴趣: Webpack headersaxios interceptors