2010-07-20 49 views
50

Tôi đang viết một dịch vụ web chỉ chấp nhận json và cũng chỉ xuất kết quả json.Mã lỗi HTTP 406 và 415

Vì vậy, tôi cần trả lại mã trạng thái thích hợp nếu có bất kỳ định dạng nào khác được yêu cầu.

Dường như tôi có hai lựa chọn:

  1. 406 - Không được chấp nhận
  2. 415 - Truyền thông không được hỗ trợ Loại

Nó sẽ được tuyệt vời nếu ai đó có thể soi sáng cho tôi như ngữ nghĩa của hai mã.

Trả lời

99

406 được máy chủ trả về khi máy chủ không thể phản hồi dựa trên việc chấp nhận tiêu đề yêu cầu (nghĩa là chúng có tiêu đề Chấp nhận cho biết chỉ muốn XML).

415 được máy chủ trả về khi thực thể được gửi trong yêu cầu (nội dung trong POST hoặc PUT) có một loại trung gian không được hỗ trợ (tức là họ đã gửi XML).

vì vậy .. 406 khi bạn không thể gửi những gì họ muốn, 415 khi họ gửi những gì bạn không muốn.

Hy vọng điều đó sẽ hữu ích!

3

406 được sử dụng khi khách hàng yêu cầu phản hồi trong loại nội dung không được hỗ trợ (trong trường hợp của bạn, bất kỳ điều gì khác ngoài JSON) bằng cách sử dụng tiêu đề Chấp nhận. 415 mặt khác được sử dụng khi khách hàng POST hoặc dữ liệu PUT trong một loại nội dung không được hỗ trợ.

Tóm lại: sử dụng 406 nếu không thể xuất ở định dạng mong muốn và sử dụng 415 nếu bạn không hỗ trợ định dạng đầu vào.

Xem RFC 2616 để định nghĩa của chúng: 406415

5

Để báo RFC2616:

406 Không được chấp nhận

Tài nguyên xác định bởi yêu cầu là chỉ có khả năng tạo ra phản ứng tổ chức có nội dung đặc điểm không được chấp nhận theo tiêu đề chấp nhận sen t trong yêu cầu.

Khi khách hàng truy vấn dịch vụ của bạn, hãy kiểm tra xem tiêu đề Accept* được gửi; nếu nó không khớp với application/json (hoặc ký tự đại diện, ví dụ: */*), hãy trả lại giá trị này. Phản hồi phải cho biết "chúng tôi chỉ phân phối JSON tại đây".

415 không được hỗ trợ Media Type

Máy chủ từ chối phục vụ yêu cầu do đối tượng được yêu cầu là trong một định dạng không được hỗ trợ bởi tài nguyên yêu cầu cho phương pháp yêu cầu.

Chỉ cần trả lại 415 Unsupported Media Type phải là câu trả lời tối thiểu cho "khách hàng đã gửi thứ gì đó không phải là JSON, không thể làm việc với điều đó"; không chắc liệu có tiêu đề để cho biết "bạn cần gửi JSON"

-2

RFC2616 giúp bạn!

http://www.rfc2616.com/#10.4.7

http://www.rfc2616.com/#10.4.16

tôi chọn 415, nó phù hợp với mô tả của bạn khá tốt.

Chỉnh sửa: Oh. IC. "thực thể của yêu cầu có định dạng không được tài nguyên được yêu cầu hỗ trợ". Vì vậy, nếu bạn có yêu cầu về nội dung và nội dung đó có loại sai, bạn nên giải quyết 415 câu trả lời.

+0

anh ấy cần cả hai, 2 trường hợp khác nhau – nathan

+0

Tôi ghét các câu hỏi mà bạn có thể trả lời ngay trong thông số kỹ thuật. Họ rất giỏi khi ghi bàn nhưng đòi hỏi phải trả lời nhanh và chính xác. : / – Cheery

31
  • 406 nếu tiêu đề Accept được gửi, bạn không thể điền đầy đủ.
  • 415 nếu số Content-Type được gửi, bạn không thể sử dụng.
Các vấn đề liên quan