使用 angular-cli 与多路径代理匹配
Use angular-cli with multiple path proxy matching
如何在 proxy.conf.json 中定义多个代理路径?
github 上的 angular-cli proxy documentation 看起来你只能有一个路径 (/api):
{
"/api": {
"target": "http://localhost:3000",
"secure": false
}
}
但是当我查看 webpack proxy or the http-proxy-middleware 文档时,我发现应该可以定义多个路径(/api-v1 和 /api-v2):
// Multiple entry
proxy: [
{
context: ['/api-v1/**', '/api-v2/**'],
target: 'https://other-server.example.com',
secure: false
}
]
但我不明白如何将其放入 proxy.conf.json。
在 proxy.conf.json 中使用以下语法:
[
{
"context": ["/api-v1/**", "/api-v2/**"],
"target": "https://other-server.example.com",
"secure": false
}
]
实际有效的语法如下:
[
{
"context": [
"/api",
"/other-uri"
],
"target": "http://localhost:8080",
"secure": false
}
]
此处记录了多个条目的语法(使用上下文):
https://github.com/angular/angular-cli/blob/master/docs/documentation/stories/proxy.md#multiple-entries
const PROXY_CONFIG = [
{
context: [
"/my",
"/many",
"/endpoints",
"/i",
"/need",
"/to",
"/proxy"
],
target: "http://localhost:3000",
secure: false
}
]
module.exports = PROXY_CONFIG;
这还需要您重命名您的配置,从 .json 到 .js 并将 运行 命令指向新文件。
对我来说,上下文语法 不太适用(我假设是因为我想使用 通配符 )。所以我想出了以下解决方案,它允许您生成配置:
module.exports = [
"/my",
"/many",
"/endpoints",
"/i",
"/need",
"/to",
"/proxy",
"/folder/*"
].reduce(function (config, src) {
config[src] = {
"target": "http://localhost:3000",
"secure": false
};
return config;
}, {});
这帮我完成了工作。 (请注意,这仍然需要您将 proxy.conf.json 重命名为 proxy.conf.js 并编辑 运行 命令以指向重命名的文件)
截至 2021 年 3 月,答案如下:
在CLI配置文件中,angular.json
,add/modify代理文件:
...
"architect": {
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "your-application-name:build",
"proxyConfig": "src/proxy.conf.js"
},
...
创建一个proxy.conf.js
例如:
const PROXY_CONFIG = [
{
context: [
"/my",
"/many",
"/endpoints",
"/i",
"/need",
"/to",
"/proxy"
],
target: "http://localhost:3000",
secure: false
}
]
module.exports = PROXY_CONFIG;
注意是.js,不是.json.
更新,2021-07-08需要.js
或.json
。前一个更好,因为它允许 // comment
.
对于 SSL:
"target" : "https://localhost:3001",
"changeOrigin": true, // solves CORS Error in F12
"logLevel": "debug", //"info": prints out in console
"rejectUnauthorzied": true, // must be false if not specify here
"secure": false, // PROD must be "true", but DEV false else "UNABLE_TO_VERIFY_LEAF_SIGNATURE"
"strictSSL": true, // must be false if not specify here
"withCredentials": true // required for Angular to send in cookie
如何在 proxy.conf.json 中定义多个代理路径? github 上的 angular-cli proxy documentation 看起来你只能有一个路径 (/api):
{
"/api": {
"target": "http://localhost:3000",
"secure": false
}
}
但是当我查看 webpack proxy or the http-proxy-middleware 文档时,我发现应该可以定义多个路径(/api-v1 和 /api-v2):
// Multiple entry
proxy: [
{
context: ['/api-v1/**', '/api-v2/**'],
target: 'https://other-server.example.com',
secure: false
}
]
但我不明白如何将其放入 proxy.conf.json。
在 proxy.conf.json 中使用以下语法:
[
{
"context": ["/api-v1/**", "/api-v2/**"],
"target": "https://other-server.example.com",
"secure": false
}
]
实际有效的语法如下:
[
{
"context": [
"/api",
"/other-uri"
],
"target": "http://localhost:8080",
"secure": false
}
]
此处记录了多个条目的语法(使用上下文): https://github.com/angular/angular-cli/blob/master/docs/documentation/stories/proxy.md#multiple-entries
const PROXY_CONFIG = [
{
context: [
"/my",
"/many",
"/endpoints",
"/i",
"/need",
"/to",
"/proxy"
],
target: "http://localhost:3000",
secure: false
}
]
module.exports = PROXY_CONFIG;
这还需要您重命名您的配置,从 .json 到 .js 并将 运行 命令指向新文件。
对我来说,上下文语法 不太适用(我假设是因为我想使用 通配符 )。所以我想出了以下解决方案,它允许您生成配置:
module.exports = [
"/my",
"/many",
"/endpoints",
"/i",
"/need",
"/to",
"/proxy",
"/folder/*"
].reduce(function (config, src) {
config[src] = {
"target": "http://localhost:3000",
"secure": false
};
return config;
}, {});
这帮我完成了工作。 (请注意,这仍然需要您将 proxy.conf.json 重命名为 proxy.conf.js 并编辑 运行 命令以指向重命名的文件)
截至 2021 年 3 月,答案如下:
在CLI配置文件中,
angular.json
,add/modify代理文件:... "architect": { "serve": { "builder": "@angular-devkit/build-angular:dev-server", "options": { "browserTarget": "your-application-name:build", "proxyConfig": "src/proxy.conf.js" }, ...
创建一个
proxy.conf.js
例如:const PROXY_CONFIG = [ { context: [ "/my", "/many", "/endpoints", "/i", "/need", "/to", "/proxy" ], target: "http://localhost:3000", secure: false } ] module.exports = PROXY_CONFIG;
注意是.js,不是.json.
更新,2021-07-08需要.js
或.json
。前一个更好,因为它允许 // comment
.
对于 SSL:
"target" : "https://localhost:3001",
"changeOrigin": true, // solves CORS Error in F12
"logLevel": "debug", //"info": prints out in console
"rejectUnauthorzied": true, // must be false if not specify here
"secure": false, // PROD must be "true", but DEV false else "UNABLE_TO_VERIFY_LEAF_SIGNATURE"
"strictSSL": true, // must be false if not specify here
"withCredentials": true // required for Angular to send in cookie