【发布时间】:2017-09-06 11:49:38
【问题描述】:
我正在重构一个写得很糟糕的 Angular2 代码,它的服务方法如下:
fooServiceName(body): Observable<any> {
let headers = new Headers();
this.loginService.writeAuthToHeaders(headers);
return this.http.put(this.loginService.url() + '/url', body, { headers: headers })
.map(response => response.json());
}
barResource(body): Observable<any> {
let headers = new Headers();
this.loginService.writeAuthToHeaders(headers);
return this.http.post(this.loginService.url() + '/url', body, { headers: headers })
.map(response => response.json());
}
我看到以下几行在许多地方重复使用:
let headers = new Headers();
this.loginService.writeAuthToHeaders(headers);
我想写一个单独的方法来调用这些行,但问题是项目新手必须记住调用该方法,有没有更好的方法?
更新:
添加缺少的方法定义:
/** function to write username and password to local storage of browser*/
public writeAuthToHeaders(headers: Headers): void {
headers.append('Accept', 'application/json');
headers.append('Content-Type', 'application/json');
headers.append('Authorization', 'Basic ' + btoa(getUsername() + ':' + this.getPassword()));
}
【问题讨论】:
-
但是任何刚接触该项目的人都需要知道调用这两行代码,所以我不知道记住是否是不将其粘贴在函数中的正当理由。
-
每个有什么不同?只有
url? -
从 Angular 4.3 开始,可以使用 interceptors 和新的 HttpClient。这是完成此类任务的合适场所
标签: typescript refactoring dry single-responsibility-principle