1
私はAPIと通信し、そこからデータを取得するために、この形式をアプリケーションで使用しました。 service.tsの1角度サービスコードのリファクタリング
getCheckoutDetails(): Observable<UserDetail> {
let query = `7668`;
return this.http
.get(this.appConfig.getAPIUrl()
+ `/buy/getDetails?${query}`)
.map(this.extractData)
.catch(this.handleErrors);
}
private extractData(res: Response) {
let data = res.json();
return data.body ? data.body.message ? data.body.message : {} : {};
}
private handleErrors(error: Response | any) {
let errMsg: string;
if (error instanceof Response) {
const body = error.json() || '';
const err = body.error || JSON.stringify(body);
errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
} else {
errMsg = error.message ? error.message : error.toString();
}
console.error(errMsg);
return Observable.throw(errMsg);
}
からのコードである今、私たちは、アプリケーションのコードの重複を検出するために、cpd
を使用していて、それがどこに私がextractData
とを使用していますと文句を言いに続き
handleErrors
コードが複製されています。
ベースクラスを使用してこれを処理するより良い方法はありますか?
を){クエリ=「7668」としましょう。 return this.get( '/ buy/getDetails?$ {query}')} 'そして全てのロジックは内部ベースのサービスになりますか? – yurzui
感謝@yurzui答えとして投稿してください。私はそれをマークします – Sajeetharan