2016-04-17 7 views
0

リソースに対して削除を行うAngularJS2アプリケーションがあります。サーバーはリソースを削除し、410-GONEで応答します。 AngularJS2はこれをエラーとみなします。 410が正解であることをAngularJS2に伝えるにはどうすればよいですか?サーバが410(応答なし)で応答したときにAngularJS2がエラーを発生させないようにするには

マイコード:リソースは、サーバー上で削除されたと言って

deleteOrganisatie(id: number) { 
    let headers = new Headers({ 'Content-Type': 'application/json', 'Accept': 'application/json' }); 
    let options = new RequestOptions({ headers: headers }); 
    return this.http.delete(this._url + id, options) 
     .map(res => <Melding>res.json().melding) 
     .catch(this.handleError); 
} 
private handleError(error: Response) { 
    return Observable.throw(error.json().error || 'Server error'); 
} 

言うまでもないです。

+0

なぜ410エラーではありませんか? –

+0

410は、リクエストの前にリソースが削除されたため、そのエラーを意味します。 – kemsky

+0

https://github.com/angular/http/issues/52に似たサウンド –

答えて

2

あなたのhandleError方法でObservable.ofで応答を返すことによって、これを行うことができます。

deleteOrganisatie(id: number) { 
    let headers = new Headers({ 'Content-Type': 'application/json', 'Accept': 'application/json' }); 
    let options = new RequestOptions({ headers: headers }); 
    return this.http.delete(this._url + id, options) 
    .map(res => <Melding>res.json().melding) 
    .catch(this.handleError); 
} 

private handleError(error: Response) { 
    if (error.status === 410) { 
    return Observable.of(error.json()); 
    } else { 
    return Observable.throw(error.json().error || 'Server error'); 
} 
関連する問題