Tôi hiện đang xây dựng một Web API và có một kịch bản cụ thể mà tôi không thể xác định Mã trạng thái HTTP nào thích hợp nhất để trả lại.Không thể xóa liên hệ cuối cùng - Mã trạng thái Http nào?
Các Kịch bản
Tôi có một "khách hàng" tài nguyên công ty sở hữu một bộ sưu tập các tài nguyên liên lạc.
Sự bất biến là khách hàng phải luôn có ít nhất một liên hệ. Do đó, nếu một yêu cầu được thực hiện để xóa một liên hệ và liên hệ này là liên hệ còn lại cuối cùng cho khách hàng đã cho, tôi cần trả lại phản hồi HTTP thích hợp cho biết yêu cầu không thể được thực hiện khi bạn "Không thể xóa địa chỉ liên hệ cuối cùng".
Cảm giác của tôi là thế này nên thuộc loại "4xx Khách hàng Lỗi của"
Tôi đã xem xét các mã trạng thái sau:
400 Bad Request - Tôi đã cai trị này ra vì nó là cụ thể liên quan đến yêu cầu không đúng định dạng trong đó máy chủ không thể hiểu được.
405 Phương pháp không được phép - lúc đầu điều này có vẻ phù hợp, nhưng tôi nghĩ 405 cho biết phương pháp này không bao giờ được phép, tuy nhiên kịch bản trên chỉ thoáng qua. Suy nghĩ?
409 Xung đột - Tôi đã hướng tới điều này, tuy nhiên, ví dụ phổ biến nhất cho mã này thường là một xung đột ngoại lệ/chỉnh sửa đồng thời.
Có ai có bất kỳ hướng dẫn nào về cách tôi phản hồi trong trường hợp này không?
'409' nhận được phiếu bầu của tôi trong trường hợp này, vì đó là xung đột mà người dùng có thể giải quyết. Rằng ví dụ phổ biến là cái gì khác không quan trọng với tôi, các ví dụ khác như thế này tồn tại. '400' là đúng, nhưng có điều gì đó để nói cho'405' nếu bạn sử dụng các yêu cầu' DELETE' thực tế ... Nếu không, 409 tôi nói, nhưng nếu bạn làm ... tôi thấy tình huống khó xử của bạn. – Wrikken
Vâng, tôi đang sử dụng động từ DELETE ở đây, nhưng tôi nghĩ 405 cho biết Phương thức nên _never_ được phép trên tài nguyên đã cho. –