【发布时间】:2019-01-10 21:20:48
【问题描述】:
我的 Angluar 应用程序 api 与应用程序在 ng serve 中运行的端口 (:8087) 不同。
我正在尝试获取对 api 的请求,例如:/api/settings 转到 http://localhost:8087/api/settings 而不是 http://localhost:4200/api/settings。
我尝试设置一个代理,如下所示:https://angular.io/guide/build#proxying-to-a-backend-server,但有些东西不起作用,我不太了解它,不知道我应该期待什么。
当我通过http://localhost:8087/api/settings 直接联系 API 时,我得到了预期的响应。
我只使用:ng serve 运行应用程序。
proxy.conf.json:
{
"/api/*": {
"target": "http://localhost:8087",
"secure": false,
"changeOrigin": true,
"logLevel": "debug"
}
}
[HPM] GET /api/store/categories -> http://localhost:8087
[HPM] GET /api/store/cart -> http://localhost:8087
[HPM] GET /api/settings -> http://localhost:8087
浏览器中的网络请求显示为Request URL: http://localhost:4200/api/settings... 但我不确定这是否应该反映不同的端口。应该吗?
Angular CLI:7.0.6 | 节点:8.11.1 | 操作系统:win32 x64 | 角度:7.0.4
实际发生的情况是,我陷入了一个返回另一个的永无止境的循环(这可能是路由的一些问题,但我需要先确认代理是否正常工作)。
【问题讨论】:
-
尝试删除
"changeOrigin": true,并将/api/*更改为简单的/api -
@AlexanderStaroselsky 尝试了这两种方法均无济于事。你知道我如何确认它正在工作吗?就像,记录器中的消息是您所期望的吗?我希望看到:
[HPM] GET /api/settings -> http://localhost:8087/api/settings -
您能否确认一下您用于运行 Angular 应用程序的 npm 命令(给定代理)?此外,如果您在基本 App 组件之类的东西中执行 API 调用,您会收到响应或任何错误吗?此外,您能否确认,如果您直接点击 API 端点,您是否获得了适当的响应(抛出浏览器或 Postman 或 cURL 等工具)?请更新您的问题以反映该信息。谢谢!
-
@AlexanderStaroselsky 我更新了我原来的问题来回答你的问题。 :)
-
您能否尝试使用
ng serve --proxy-config proxy.conf.json运行 Angular 并告诉我是否有所作为。或者你有没有在angular.json注册代理?
标签: angular proxy command-line-interface