Tôi đã sử dụng các chiến lược xử lý lỗi http sử dụng trong tài liệu angular.io:lỗi đúng cách xử lý cho góc kết quả 2 http
getHeroes() {
return this.http.get(this._heroesUrl)
.map(res => <Hero[]> res.json().data)
.catch(this.handleError);
}
private handleError (error: Response) {
console.error(error);
return Observable.throw(error.json().error || 'Server error');
}
}
Trong một số tình huống, thay vì một phản ứng JSON tôi sẽ nhận được 204 mã trạng thái (Không có dữ liệu). Trong trường hợp này, trình xử lý lỗi không được gọi cho đến khi không phân tích cú pháp kết quả qua res.json()
, do đó lỗi được chuyển đến handleError là "error.json không phải là hàm".
Tôi có thể thẩm vấn luồng phản hồi để kiểm tra mã trạng thái 200 (OK) hoặc kiểu nội dung tiêu đề phản hồi của "application/json" và báo hiệu trình xử lý lỗi có thông báo lỗi có liên quan hơn không?
Cảm ơn, tôi đã bỏ lỡ điều đó. Đối với bất kỳ ai khác đến điều này, xin lưu ý rằng hành vi xử lý lỗi vì alpha 47 chỉ áp dụng cho các mã trạng thái dưới 200 và cao hơn 299. Vì mã trạng thái của tôi là 204 (Không tìm thấy), tôi vẫn cần phải ném lỗi theo cách thủ công "alpha 46 trở xuống". – gxclarke
Er, phản hồi HTTP 204 là "không có dữ liệu" ("không tìm thấy" là 404). –
Có, xin lỗi tôi có nghĩa là "Không có dữ liệu". – gxclarke