次のようなHTTPインターセプタの実装はAngular ^4.3.6
です。成功したHTTP呼び出しでAngular 4を使用して失敗したリクエストでHTTPインターセプタのステータスが0になる
import {Injectable} from "@angular/core";
import {
HttpInterceptor,
HttpHandler,
HttpRequest,
HttpEvent,
HttpResponse,
HttpErrorResponse
} from "@angular/common/http";
import {Observable} from "rxjs/Observable";
import "rxjs/add/operator/do";
@Injectable()
export class InterceptorService implements HttpInterceptor {
intercept(
req: HttpRequest<any>,
next: HttpHandler
): Observable<HttpEvent<any>> {
return next.handle(req).do(evt => {
console.log(evt);//this logs the success message properly
if (evt instanceof HttpResponse) {
//Keep going
}
},err => {
console.log(err);
//this logs the error but don't have useful info in it.
});
}
}
、私が最初にconsole.logに有効なevt
の以下のメンバーを取得します。
ok:true
status:200
statusText:"OK"
type:4
]
しかし、失敗した私は2番目にconsole.logにerr
ブロックから適切なステータスコードを持っていませんが、
ZONE.js
からDEVコンソールに以下のメッセージを持っていますzone.js:2263 OPTIONS http://localhost:7001/coreRobo/neuralProcess 404(見つかりません)
name:"HttpErrorResponse"
ok:false
status:0
statusText:"Unknown Error"
私はここで何が不足しているのか分かりませんが、私は404,403または500のような有効なものを私に与えたいと思っています。
私はUIに適切なメッセージを表示し、失敗時にクライアントがパニックに陥るのを防ぐために、これらの値を必要としました。
助けを歓迎します。前もって感謝します。
このエラーは何か?実際にサーバーから404,403、または500のエラーが発生していますか?サーバーにリクエスト(ネットワーク問題、DNS問題など)を送信できない場合でも、HTTPステータスコードを取得することはできません。 –
@JBNizetが何かをしています。私はあなたと同じ経験をしていましたが、それはサーバーに到達できなかったためでした。それが他のものであれば、エラーはクライアント側ではなくサーバー側である可能性が高いです。 –
zone.jsから記録されたブラウザのコンソールに404エラーメッセージが表示されます。サーバーの問題ではありません。これらのステータスコードを取得することはできませんか?サービスコールの後にステータスコードをキャッチしないと、インターセプタの要点は何ですか? –