Angular Proxy.Conf.Json无法使用多个API

时间:2019-06-07 15:36:41

标签: angular angular-cli

我有以下proxy.conf.json,日志行和api调用。

  {
  "/first/api/": {
    "target": "/first/api/",
    "secure": false,
    "logLevel": "debug"
  },
  "/second/api/": {
    "target": "/second/api/",
    "secure": false,
    "logLevel": "debug"
  }


[HPM] GET /first/api/values-> /first/api/
[HPM] GET /second/api/dummy -> /second/api/

return this.http.get<any>(this.firstApi + 'values')
return this.http.get<any>(this.secondApi + 'dummy')

鉴于我可以看到日志行,所以我相信proxy.conf.json正确接收了api调用,但是当调用消失时却得到了404。日志仅输出目标,因此我不清楚如何编写所需的url,例如: localhost / first / api / values

只有一个api时,此方法可以正常工作:

  {
  "/api/": {
    "target": "/first/",
    "secure": false
  }

有人可以建议我进一步调试吗?


已解决

yanky_cranky的回答是正确的。为了帮助理解他的答案与我看到的内容之间的关系,我还需要查看IIS日志。在这里,我可以看到正在调用的网址。

1 个答案:

答案 0 :(得分:3)

首先,这里您没有正确利用Angular的代理概念。

1)关于代理:代理可用于将“ / first / api”之类的任何请求映射到您无法访问的特定“域”。 如果api不公开,则如果api指向不同的主机,则将导致cors问题(这是浏览器的属性):{即,主机名或端口或两者都不同} 使用Angular,在我们的开发阶段,我们可以利用Nginix提供的相同反向代理概念并将其定位到正确的域。

More On Proxy Here

2)您的Nginix conf将导致: 以下路径:

  {
  "/first/api/": {
    "target": "/first/api/",  
    "secure": false,
    "logLevel": "debug"
  },

/ first / api / first / api /,因此您得到404

  "/second/api/": {
    "target": "/second/api/",
    "secure": false,
    "logLevel": "debug"
  }

/ second / api / second / api /,相同的404

3)更正配置

 {
  "/first/api/": {

    "target": "http://localhost:{portNo}",

    "secure": false,

    "logLevel": "debug"

  },
  "/second/api/": {

    "target": "http://localhost:{portNo}",

    "secure": false,

    "logLevel": "debug"

  }

这些api然后将定位到:

http://localhost:{portNo} / first / api

http://localhost:{portNo} / second / api

欢呼(y)