2016-05-09 22 views
1

私は$httpインターセプタを探しています。そして私は、requestErrorとresponseErrorがあることを知っています。HTTPリクエストエラーと応答エラー

1)requestErrorとresponseErrorの違いは何ですか?
2)requestErrorはどのような条件でトリガーされますか?

答えて

1

要求エラーがheaderペイロード行方不明

応答エラーがあった要求に応じて、サーバによって送信されたエラーであるように、サーバー上のリソースを見つけるために必要なパラメータが不足して、基準を満たしていないエラーです404ページが見つかりませんでした。応答エラー

+0

Btwが400です。 – desmondlee

1

あなたは差がrequestErrorがあなたのリクエストは処理できないことを意味していることである。この https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

に見てみるべきで、多分あなたは、URLでエラーを持っているか、サーバーが利用できない

responseErrorそのhttpステータスコードに関連して、あなたはサーバーに到達しますが、何か間違っているかもしれません。例えば、あなたの答えに誤りがあるかもしれませんが、コードで空の応答かもしれません。204コンテンツなし

0

要求エラーと応答エラーの主な違いは、インターセプタによって構築された約束チェーン内の順序です。

promise.then(requestFn, requestErrorFn).then(responseFn, responseErrorFn):だから、あなたはすべての4つの方法を提供インターセプタのために、あなたはそのような約束を買ってあげることがわかり、このsource code

// apply interceptors 
    forEach(reversedInterceptors, function(interceptor) { 
    if (interceptor.request || interceptor.requestError) { 
     chain.unshift(interceptor.request, interceptor.requestError); 
    } 
    if (interceptor.response || interceptor.responseError) { 
     chain.push(interceptor.response, interceptor.responseError); 
    } 
    }); 

    while (chain.length) { 
    var thenFn = chain.shift(); 
    var rejectFn = chain.shift(); 

    promise = promise.then(thenFn, rejectFn); 
    } 

を見てみましょう。

答えます2.約束は、要求が初期化された後var promise = $q.when(config);によって作成されます。一見したところで、ちょっと毛深いことが起こっていますが、configオブジェクトにはデフォルトのコールバックがあるようです。私は実際のリクエスト構文/ configに何か問題があるか、または角度が要求を送信している問題に遭遇している(おそらくネットワークが利用できないか、そうでないものと思われる)場合、元の約束は拒否されて解決され、requestErrorハンドラ呼び出される。

関連する問題