2010-02-03 49 views
37

Nếu bạn đang tìm kiếm /Resource/Id và tài nguyên đó không tồn tại, tôi đã luôn luôn mặc dù 404 là câu trả lời thích hợp. Tuy nhiên, khi trả lại null từ trình xử lý Jersey, tôi lấy lại "204 Không có nội dung". Tôi có thể làm việc với một trong hai, nhưng tôi tò mò với những người khác nghĩ về điều này.Không tìm thấy tài nguyên RESTful. 404 hoặc 204? Jersey trả về 204 khi không được trả lại từ bộ xử lý

Để trả lời câu hỏi tiếp theo của riêng tôi. Để giúp Jersey trả lại 404, bạn phải ném một ngoại lệ.

if (a == null) 
     throw new WebApplicationException(404); 
+2

Chỉ cần lưu ý rằng nếu tài nguyên trống, bạn thực sự muốn trả lại 'null', thì 204 sẽ là mã phản hồi chính xác. –

+0

@MichaelMior Tôi hơi bối rối. không phải là "null" có nghĩa là đối tượng không được tìm thấy ?. Một mảng trống có thể được coi là Không có nội dung nhưng một null có nghĩa là nó thậm chí không tồn tại phải không? –

+0

@RajaAnbazhagan Điều đó thực sự phụ thuộc vào ứng dụng của bạn. –

Trả lời

46

Các HTTP Code Definition tiểu bang mà các mã bắt đầu với 2 là cho các cuộc gọi thành công và 4 cho những người không thành công.

  • Khi bạn nhận được 204 nó chỉ cho bạn thấy rằng không có gì để quay trở lại (thường là bạn mong đợi nếu bạn thực hiện một POST hoặc PUT cuộc gọi mà không cần phải trả lại bất cứ điều gì)

  • Khi bạn nhận được là một 404 nó nói rằng cuộc gọi đã không thành công, do đó, nó sẽ không trả lại bất cứ điều gì.

Trong trường hợp 404 của bạn là thích hợp, không phải là 204! Vì bạn có thể muốn nói với người gọi rằng anh đã thực hiện một cuộc gọi sai.

+10

Tôi muốn nói rằng 201/202 (được tạo/chấp nhận) phù hợp hơn với các đường dẫn PUT/POST trống. –

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