Tôi đang làm việc trên một dự án và sau khi tranh cãi với mọi người tại nơi làm việc khoảng hơn một giờ. Tôi quyết định biết những người trao đổi ngăn xếp có thể nói gì.
Chúng tôi đang viết một API cho một hệ thống, có một truy vấn sẽ trả về một cây Tổ chức hoặc một cây Mục tiêu.
Cây của Tổ chức là tổ chức mà người dùng có mặt, Nói cách khác, cây này phải luôn tồn tại. Trong tổ chức, một cây mục tiêu nên luôn luôn có mặt. (đó là nơi tranh luận bắt đầu). Trong trường hợp cây không tồn tại, đồng nghiệp của tôi đã quyết định rằng sẽ trả lời đúng với mã trạng thái 200. Và sau đó bắt đầu yêu cầu tôi sửa mã của mình vì ứng dụng bị đổ khi không có cây.
Tôi sẽ cố gắng để ngọn lửa và giận dữ.
Tôi đề nghị tăng lỗi 404 khi không có cây. Ít nhất nó sẽ cho tôi biết rằng có điều gì đó không ổn. Khi sử dụng 200, tôi phải thêm kiểm tra đặc biệt vào phản hồi của mình trong cuộc gọi lại thành công để xử lý lỗi. Tôi đang mong đợi nhận được một đối tượng, nhưng tôi thực sự có thể nhận được phản hồi trống vì không tìm thấy gì. Nghe có vẻ hoàn toàn công bằng khi đánh dấu phản hồi là 404. Và sau đó chiến tranh bắt đầu và tôi nhận được thông báo rằng tôi không hiểu lược đồ mã trạng thái HTTP. Vì vậy, tôi ở đây và hỏi có gì sai với 404 trong trường hợp này? Tôi thậm chí còn nhận được lập luận "Không tìm thấy gì, vì vậy việc trả lại 200" là đúng. Tôi tin rằng nó sai vì cây luôn luôn có mặt. Nếu chúng tôi không tìm thấy gì và chúng tôi đang mong đợi một cái gì đó, thì đó phải là 404.
Thêm thông tin,
Tôi quên thêm các url được tìm nạp.
Tổ chức
/OrgTree/Get
Bàn thắng
/GoalTree/GetByDate?versionDate=...
/GoalTree/GetById?versionId=...
Sai lầm của tôi, cả hai tham số được yêu cầu. Nếu bất kỳ phiên bản Ngày nào có thể được phân tích cú pháp đến một ngày được cung cấp, nó sẽ trả về bản sửa đổi đóng. Nếu bạn nhập một cái gì đó trong quá khứ, nó sẽ trả về phiên bản đầu tiên. Nếu bằng Id với id không tồn tại, tôi nghi ngờ nó sẽ trả về phản hồi trống với 200.
Thêm
Ngoài ra, tôi tin rằng câu trả lời tốt nhất cho vấn đề là tạo các đối tượng mặc định khi các tổ chức được tạo, không có cây nào không phải là trường hợp hợp lệ và nên được coi là một hành vi không xác định. Không có cách nào một tài khoản có thể được sử dụng mà không có cả hai cây. Vì lý do đó, họ nên luôn luôn có mặt.
Ngoài ra tôi đã liên kết này (một cái tương tự nhưng tôi không thể tìm thấy nó)
http://viswaug.files.wordpress.com/2008/11/http-headers-status1.png
/GoalTree/GetById?versionId=CompletelyInvalidID
trả lại cái gì? Không thành công, vì tài nguyên được đặt tên theo /GoalTree/GetById?versionId=CompletelyInvalidID
nghĩa đen là không tìm thấy.