2012-07-04 26 views
6

mã phù hợp đáp ứng và thông điệp cho là gì:mã HTTP response để phân biệt giữa các thông số không đúng và giá trị không

  1. lĩnh vực nộp một cách sai lầm (theo thông số URL vs cơ thể) hoặc các lĩnh vực thiếu
  2. lĩnh vực nhận được các giá trị không hợp lệ (string thay vì con số, dấu thời gian trong tương lai)
  3. một số nhân vật như ?, / nghỉ thứ trong URL thông số
  4. thất bại thực tế: thông tin không hợp lệ, lặp đi lặp lại đã thực hiện hành động-

Hiện tại, chúng tôi sử dụng 400 cho tất cả.

Trả lời

6

trường hợp 1, 2 và 3 trong câu hỏi của bạn là lỗi cơ bản cú pháp trong yêu cầu

=>400 Bad Request

(RFC 2616 nói: Yêu cầu không thể được hiểu bởi máy chủ . do cú pháp bị thay đổi)

Đối với Trường hợp 4:

a. chứng chỉ không hợp lệ

=>401 Unauthorized

b. Lặp đi lặp lại đã-làm hành động

=>403 Forbidden

(Các RFC nói: Máy chủ hiểu yêu cầu, nhưng từ chối đáp ứng nó Authorization sẽ không giúp đỡ và yêu cầu KHÔNG NÊN được lặp đi lặp lại..)

Nhưng sau đó 409 Xung đột410 Cuốn có ý nghĩa khi cố gắng thay đổi những thứ không đúng cách (PUT) hoặc truy cập vào các nguồn tài nguyên đã bị xóa, tương ứng.

Và đây là RFC 2616 Section 10.

3

Đọc thông số HTTP cho từng mã phản hồi để nhận một số thông tin về những gì cần trả về trong nội dung phản hồi. 4xx, ví dụ, nói "Ngoại trừ khi trả lời yêu cầu HEAD, máy chủ NÊN bao gồm một biểu diễn có chứa một lời giải thích về tình trạng lỗi, và cho dù đó là một điều kiện tạm thời hoặc vĩnh viễn." Điều quan trọng cần lưu ý là các mã phản hồi HTTP được thiết kế để thống nhất, và do đó có nhiều hơn nữa để làm với bồi dưỡng khả năng tương tác so với việc cung cấp các nhu cầu chi tiết của các ứng dụng riêng lẻ. Sử dụng nội dung phản hồi, không phải mã, để bao gồm chi tiết phút trong định dạng mà bạn mong đợi khách hàng của mình hiểu.

1 lĩnh vực nộp một cách sai lầm (theo thông số URL vs cơ thể) hoặc các lĩnh vực thiếu

Return "404 Not Found". Tham số chuỗi truy vấn là một phần của URI và được sử dụng để xác định tài nguyên./foo/bar?a=1&b=2 xác định tài nguyên khác với foo/bar. Nếu tài nguyên không tồn tại, trả lại 404. Không quan trọng là cùng một logic trong mã của bạn được sử dụng để xử lý bất kỳ tham số chuỗi truy vấn nào cho cùng một đường dẫn: các chi tiết đó được cố ý ẩn đằng sau giao diện thống nhất. Xem the URI spec để biết thêm chi tiết.

2 lĩnh vực nhận được các giá trị không hợp lệ (string thay vì con số, dấu thời gian trong tương lai)

400 là tốt nhất ở đây, trừ trường hợp tài nguyên trong tình trạng xung đột với yêu cầu mà người sử dụng có thể hợp lý được thể giải quyết (và sau đó gửi lại yêu cầu), trong trường hợp trở lại 409.

3 một số nhân vật như thế nào?,/break thứ trong URL thông số

Nếu vỡ như vậy là do máy chủ của bạn không xử lý đúng các ký tự dành riêng trong thành phần chuỗi truy vấn, trả lại 500. Nếu khách hàng gửi một Yêu cầu URI bị sai, trả về 400. Nếu URI xác định tài nguyên mà máy chủ của bạn không xử lý, hãy trả lại 404.

4 thất bại thực tế: thông tin không hợp lệ, lặp đi lặp lại đã thực hiện hành động-

thông tin không hợp lệ nên kết quả trong "401 Unauthorized". Lặp lại một hành động đã được thực hiện sẽ dẫn đến 200 OK (hoặc chuyển hướng, vv) nếu phương thức yêu cầu là idempotent (GET, HEAD, PUT, DELETE). Đối với POST, việc lặp lại hành động phụ thuộc hoàn toàn vào bản chất của hành động và thực tế mọi mã trạng thái đều có thể được trả lại. 400/409 là phổ biến, nhưng nhiều tài nguyên như vậy chỉ đơn giản là thực hiện các hành động một lần nữa, mà thường là mong muốn.

+0

+1. 404 cho các URL lạ có vẻ ý nghĩa. – ArjunShankar

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