angular - Angular 4覆盖基本网址获取请求
问题描述
我公司的 Angular 4 站点中的所有 GET 请求都使用请求选项,该请求选项也使用自定义请求。站点中的获取请求如下所示
return this.http.get('Excel/download?', options)
这将生成www.site1.com /excel/download
大约有 600 个 GET 请求,它们都将在请求的开头添加 www.site1.com,这就是我所期望的。
在所有这些获取请求中,我只有一个需要去 www.site1.com 以外的任何地方,例如 www.site2.com/excel/download
但是当我进入服务获取请求时
return this.http.get('http://www.site2.com/Excel/download?', options)
请求发出为
http://www。网站1 .com / http://www。site2 .com/Excel/下载?
app 模块对所有服务请求都有以下内容,这就是提供固定获取请求的内容。
{provide: RequestOptions, useClass: CustomRequestOptions}
仅对于这种情况,我将如何覆盖它,所以我只需向 www.site2 发送一个获取请求。
自定义请求
export class CustomRequestOptions extends BaseRequestOptions {
merge(options?: RequestOptionsArgs): RequestOptions {
options.url = AppSettings.API_ENDPOINT + options.url;
if (options.method === 'put' ||
options.method === 'post' ||
options.method === 'patch') {
let headers = options.headers;
headers['Content-Type'] = 'application/json';
options.headers = headers;
}
return super.merge(options);
}
}
解决方案
merge
如果还没有现有的域部分,您可以增强 RequestOptions方法以仅在域部分之前添加。一种天真的方法是检查字符串是否以开头http://
,更复杂的方法可以使用正则表达式来确保它也可以捕获https://
。
merge(options?: RequestOptionsArgs): RequestOptions {
if (options.url.indexOf('http://') !== 0) {
options.url = AppSettings.API_ENDPOINT + options.url;
}
if (options.method === 'put' ||
options.method === 'post' ||
options.method === 'patch') {
let headers = options.headers;
headers['Content-Type'] = 'application/json';
options.headers = headers;
}
return super.merge(options);
}
您现在可以this.http.get('http://www.site2.com/Excel/download?', options)
不添加该www.site1.com
部分,但所有其他在开头还没有域的请求仍将在前面添加http://www.site1.com
推荐阅读
- high-availability - 空闲 AMQ Artemis 集群上的 CPU 使用率高,与共享存储 HA 的锁有关
- clickhouse - 如何列出clickhouse DB中的所有可用视图?
- bash - 当前日期别名为 bash 中的字符串
- python - Django 管理员:无法调整类型'decimal.Decimal'
- google-chrome-extension - Chrome 扩展程序,每次更新时检查 URL 还是在清单中使用“匹配项”?
- android - 通过 API 向 openHAB 发送 Android Volley POST 请求
- python - ValueError: x 和 y 必须具有相同的第一维,但具有形状、tkinter 和 matplotlib 问题
- python - 替换和估算时间序列中的缺失数据
- css - 在 iPhone 上使用 CSS 自定义属性定义 div background-image 时闪烁
- hangouts-chat - 如何在卡片消息 Google Chat API 中添加条件内容?