2012-02-04 29 views
15

Phương pháp hay nhất liên quan đến việc gửi phản hồi lỗi trong dịch vụ web JSON là gì? Tôi đã nhìn thấy nó được thực hiện một số cách và muốn biết liệu có bất kỳ tiêu chuẩn thỏa thuận hoặc thực hành tốt nhất trong số các lựa chọn.Các phương pháp hay nhất để gửi phản hồi lỗi trong các dịch vụ web JSON là gì?

Tôi đã thấy nó được thực hiện ở nơi phản hồi bao gồm chỉ báo thành công hay thất bại cũng như dữ liệu được trả lại hoặc thông báo lỗi phù hợp, ví dụ:

[{'success':true, 'data':{...}] 
[{'success':false, 'data':{'message':'error'}] 

Nhưng tôi cũng đã xem các ví dụ về đối tượng JSON chỉ bao gồm dữ liệu và dịch vụ sử dụng mã lỗi HTTP bình thường để biểu thị sự cố (403, 404, 500, v.v.). (Đây là cách API Twitter thực hiện.)

Có cách nào "đúng" để thực hiện việc này hay chỉ là vấn đề về phong cách? Phương pháp thứ hai có nhiều hơn "RESTful" không?

Trả lời

17

Trong phương pháp "RESTful", phản hồi lỗi chính được biểu thị bằng mã trạng thái thích hợp (4xx/5xx).

Thư của bạn nên cung cấp gợi ý bổ sung, cụ thể cho ứng dụng về cách khôi phục từ lỗi. Điều này có thể bao gồm các biểu diễn có thể đọc được của con người về lỗi đã xảy ra hoặc một số loại chỉ báo kỹ thuật khác (ví dụ: cung cấp tên lớp ngoại lệ).

Để trở thành chung chung, hãy giữ cú pháp sửa lỗi cho các thông báo lỗi của bạn. Điều này cho phép bạn giới thiệu các thông báo lỗi mới với việc phá vỡ các máy khách.

+4

Để kết thúc này, tôi đã xem xét điều này hôm nay: http://tools.ietf.org/html/draft-pbryan-http-json-resource-01 –

3

Sử dụng mã HTTP thích hợp và đặt những gì bạn hiện gọi là "dữ liệu" làm nội dung phản hồi. Đây là cách RESTful chính xác duy nhất để làm cho người dùng API nhận biết lỗi.

Chỉ cần thực hiện điều này sẽ không làm cho API của bạn yên tĩnh, nhưng không làm điều đó chắc chắn sẽ làm cho API của bạn không RESTful.

Ví dụ về mã trạng thái HTTP được sử dụng tốt cho lỗi nằm trong số Dropbox API reference, hãy xem phần "Lỗi" theo từng phương pháp, chúng giải thích mã lỗi nào bạn mong đợi và ý nghĩa liên quan phương pháp.

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