在Angular 4的HTTP包('@ angular/http')中,可以在get请求中传递URLSearchParams对象.在请求方法中分配参数对象时,使用search和params作为将值传递给的属性有什么区别?
例如,以下两段代码之间有什么区别:
let params = new URLSearchParams();
params.set('param1', 'xyz');
this.http.get('url', { search: params });
Run Code Online (Sandbox Code Playgroud)
和
let params = new URLSearchParams();
params.set('param1', 'xyz');
this.http.get('url', { params: params });
Run Code Online (Sandbox Code Playgroud)
非常感谢.
我有一个 angular 4 Web 应用程序,它托管在 apache 2.4 上。该应用程序使用在 express 上运行的 nodejs javascript 中编写的 API。网站和 API 服务都在同一台机器上运行,但在不同的端口上。该网站在端口 80 上,API 服务在端口 9000 上侦听。
我想设置 apache 为所有 API 调用做反向代理。
例如,任何包含 /api/ 的 url 我希望它由 apache 重写以指向 API url:port。如果我像下面这样使用 ProxyPass,重定向工作正常:
ProxyPass "/api/V1/systeminfo" "http://localhost:9000/api/V1/systeminfo"
ProxyPassReverse "/api/V1/systeminfo" "http://localhost:9000/api/V1/systeminfo"
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么做,是使用 ProxyPassMatch 指令并创建一个正则表达式,以便将包含 /api/ 的任何 url 重定向到http://localhost:9000/api/ .....
我尝试了以下但它不起作用:
ProxyPassMatch "^/api.*$" "http://localhost:9000/$1"
ProxyPassReverse "^/api.*$" "http://localhost:9000/$1"
Run Code Online (Sandbox Code Playgroud)
以下情况也没有:
ProxyPassMatch "^/.*?/api.*?/v[0-9]+/(.*)$" "http://localhost:9000/$1"
ProxyPassReverse "^/.*?/api.*?/v[0-9]+/(.*)$" "http://localhost:9000/$1"
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。我的正则表达式技能缺乏!
注意:显然 'localhost' 可以是 IP 地址或域,为了简单起见,我在示例中使用它。
非常感谢!
编辑:根据亚历克斯的评论,我更正了第一个示例以使用 .* 而不是 * 。