我用 ngx-rocket 创建了一个 Angular 项目。
- 在 localhost:4200 运行的 Angular 前端
- 后端在 locahlost:8000 提供 api
我使用预配置的 https-proxy-agent 和 ngx-rocket 将我的 api 请求从我的前端重定向到我的后端。我曾经有我的 api 端点localhost:8000/api/endpoint
并且曾经可以工作,但现在将后端切换为在localhost:8000/endpoint
. 我调整了代理以反映这些更改,但由于某些原因,现在它仅在我localhost:4200/endpoint/
使用尾部斜杠请求时才有效,而在此之前它没有。
我可以只更改前端的端点,但我更愿意了解正在发生的事情并解决根本问题。
proxy.conf.js
const proxyConfig = [
{
context: '/api/*',
pathRewrite: { '^/api': '' },
target: 'http://localhost:8000/',
changeOrigin: true,
secure: false,
logLevel: 'debug'
}
];
环境.ts
export const environment = {
production: false,
version: env.npm_package_version + '-dev',
serverUrl: '/api/',
defaultLanguage: 'de-DE',
supportedLanguages: ['de-DE', 'en-US'],
};
示例服务:
private endpointUrl = 'endpoint';
getEndpointList(): Observable<Endpoint[]> {
return this.http
.get<ApiResponse<Endpoint>>(this.endpointUrl)
};
此端点不起作用,但它曾经与旧配置一起使用。如果我将其更改为private endpointUrl = 'endpoint/';
它恰好可以工作。
当前行为:
请求http://localhost:4200/api/endpoint
- 角度控制台中没有代理登录
网络(Chrome 开发工具):
- 状态码:
301
- 地点:
/endpoint/
- 结果请求:
http://localhost:4200/endpoint/
请求http://localhost:4200/api/endpoint/
[HPM] Rewriting path from "/api/endpoint/" to "/endpoint/"
[HPM] GET /api/endpoint/ ~> http://localhost:8000/
网络(Chrome 开发工具):
- 状态码:
200
- 地点:
/endpoint/
- 返回 api 响应
预期行为:
api 请求应该在没有斜杠的情况下工作。恐怕这是愚蠢的,但我目前无法弄清楚,所以任何帮助都会非常感激。