MGD*_*ies 3 angular-cli angular
我有以下 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')
Run Code Online (Sandbox Code Playgroud)
鉴于我可以看到日志行,我相信 proxy.conf.json 正确接收了 api 调用,但是当调用消失时我收到了 404。日志只输出目标,所以我不清楚如何编写我需要的 url,例如: localhost/first/api/values
当只有一个 api 时,这可以正常工作:
{
"/api/": {
"target": "/first/",
"secure": false
}
Run Code Online (Sandbox Code Playgroud)
有人可以建议我进一步的调试步骤吗?
解决了
yanky_cranky 的回答是正确的。作为了解他的回答与我所看到的内容有何关联的助手,我还需要查看我的 IIS 日志。在这里我可以看到被调用的网址。
首先,在这里您没有正确利用 Angular 的代理概念。
1)关于代理:代理可用于将任何请求(如“/first/api”)映射到您无法访问的特定“域”。如果 apis 不是公开的,如果 api 指向不同的主机,它们将导致 cors 问题(这是浏览器的属性):{即,主机名或端口或两者都不同}使用 Angular,在我们的开发阶段,我们可以利用 Nginix 提供的相同反向代理概念并将其定位到正确的域。
2)您的 Nginix conf 将导致:以下路径:
{
"/first/api/": {
"target": "/first/api/",
"secure": false,
"logLevel": "debug"
},
Run Code Online (Sandbox Code Playgroud)
/first/api/first/api/ ,因此你得到 404
"/second/api/": {
"target": "/second/api/",
"secure": false,
"logLevel": "debug"
}
Run Code Online (Sandbox Code Playgroud)
/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"
}
Run Code Online (Sandbox Code Playgroud)
然后这些 api 将针对:
http://localhost :{portNo}/first/api
http://localhost :{portNo}/second/api
干杯 (y)
| 归档时间: |
|
| 查看次数: |
3045 次 |
| 最近记录: |