2014-06-13 21 views
15

Trong ứng dụng của tôi, tôi đang sử dụng lệnh REST api để lấy dữ liệu của mình. Nếu gửi một yêu cầu như thế này

$http.get('api/entity/' + $scope.entityId).success(/* DO STUFF */).error(/* DO STUFF */) 

Trong dịch vụ, nếu ENTITYID không tồn tại Tôi trả về một 404. Trong hàm lỗi tôi bắt nó bằng cách sử dụng trạng thái (tham số thứ hai) và hành động theo nó trong một cách thích hợp.

Tôi đang bực mình bởi thực tế là góc cạnh nếu ném một ngoại lệ và gây ô nhiễm cho bảng điều khiển javascript. Nó dường như xảy ra trên Angular.js: 8165

Có cách nào để nói góc cạnh rằng tôi là một nhà phát triển trưởng thành và tôi sẽ xử lý những gì anh ta xem là lỗi của bản thân một cách tốt đẹp?

Nói cách khác, tôi có thể nói góc cạnh không cho ra kết quả không?

Cảm ơn,

+0

Bạn có chắc chắn đó là AngularJS chứ không phải trình duyệt? Tôi khá chắc chắn rằng trình duyệt ghi lại mọi lỗi HTTP. [Bạn có thể sử dụng như một bộ lọc trên bảng điều khiển của bạn đăng nhập mặc dù.] (Http://stackoverflow.com/a/14427545) – Philipp

+0

Vâng, bạn có thể đúng, chỉ mỏng tôi biết là tôi nhận được điều này: http://postimg.org/image/g54vhjmrz/ –

Trả lời

15

Đây là chức năng của trình duyệt, và không phải là một phần của AngularJS mà không được khai thác gỗ. Dưới đây là một mẫu từ giao diện điều khiển của trang này:

console sample

Bạn có thể nhìn thấy nó ghi lại thông báo lỗi tương tự chính xác như bạn được liên kết trong comment của câu hỏi, và thực sự là pointing to a part in the source code, nhưng tôi đã không thêm bất kỳ khai thác gỗ các câu lệnh.

Điều tốt nhất bạn có thể làm là theo dõi this answer và thêm bộ lọc vào bảng điều khiển.

+0

Gọn gàng, cảm ơn câu trả lời! –

+0

Đây không phải là giải pháp nếu bạn muốn tránh gây ô nhiễm cho giao diện điều khiển cho tất cả người dùng, không chỉ riêng bạn. Câu hỏi là một câu hỏi hay. Tôi muốn các máy chủ để ném một ngoại lệ trong trường hợp của một lỗi, và tôi muốn khách hàng để xử lý nó mà không gây ô nhiễm giao diện điều khiển. – Kesty

+0

Trong khi đúng là trình duyệt (Chrome và Opera trong trường hợp của tôi) sẽ ghi lại "lỗi mạng", bạn có thể ẩn bằng cách chọn hộp kiểm "Ẩn mạng" trong bộ điều khiển. Tuy nhiên, như câu hỏi ban đầu nói, lỗi cũng được ghi lại bởi AngularJS. Tôi cũng muốn dừng lại. –

1

Tôi không thêm giải pháp thực sự cho điều này vì Philipp cung cấp câu trả lời đúng, nhưng tôi muốn đăng một ý tưởng về "giải pháp thay thế" cho việc này.

Nếu bạn thực sự muốn tránh điều này, các giải pháp chỉ đơn giản là đó để làm cho tất cả các câu trả lời không thành công như một phản ứng xử lý (ví dụ: thông tin không hợp lệ, email tồn tại, ngày bắt đầu không hợp lệ, ... và vân vân) để tất cả đều hoạt động như một thành công và trạng thái trở lại với 200 và bạn có thể thêm vào tiêu đề phản hồi hoặc nội dung của một thuộc tính khác như secondaryStatusCode=400, sau đó bên trong chức năng thành công ở mặt trước bạn hãy thử đọc này, trong trường hợp không phải là 200.

Tôi biết đây là một giải pháp xấu xí nhưng bạn có thể sử dụng cách này nếu bạn thực sự cần phải tìm một giải pháp cho việc này.

+0

Cảm ơn bạn đã trả lời, nhưng như bạn đã nói, giải pháp khắc phục này và API tôi xây dựng cần phải luôn "sạch" để khách hàng sử dụng trực tiếp (không có giao diện người dùng) –

+0

BTW Tôi sẽ không gọi điều đó xấu, phục vụ mục đích và tôi đã thấy một số lượng rất lớn hoặc các dịch vụ và trang web bằng cách sử dụng kỹ thuật này. Đối với bản thân mình, tôi không muốn làm điều đó và cố gắng để phần còn lại càng nhiều càng tốt ... –

+0

Vì vậy, tôi, và tôi nghĩ có rất nhiều dự án sử dụng giải pháp "xấu xí" này nếu thực sự nó là như vậy. Và tôi biết câu trả lời có thể quá muộn nhưng tôi chỉ muốn thêm câu trả lời này cho cộng đồng đang tìm kiếm câu trả lời cho loại câu hỏi này. –

Các vấn đề liên quan