Если API-интерфейс REST завершился с ошибкой, должен ли я вернуть сообщение статуса HTTP 200, 400 или 500?

Когда пользователь отправляет неверные данные в мой API (обычно через Javascript + JSON), мне интересно, какой код ответа HTTP я должен ответить.

Должен ли я вернуть ответ HTTP 200 с ошибками - или мой сервер ответит с ошибкой 400 или 500, так как запрос действительно не прошел мою проверку из-за некоторых плохих данных?

Кажется, что ошибка 400 - это путь, потому что "класс кода состояния 4xx предназначен для случаев, когда клиент, похоже, ошибся" - wikipedia

Однако следует иметь в виду, что большинство людей используют фреймворк вроде jQuery, который требует указать альтернативный обратный вызов, когда AJAX-запросы отвечают на любой код состояния, отличный от 200.

Ответ 1

400 Плохой запрос Запрос не мог быть понят сервером из-за искаженного синтаксиса. Клиент НЕ ДОЛЖЕН повторять запрос без изменений.

использовать statusCode в jQuery ajax-вызов:

<html>
<head>
<title>jquery testing</title>
<script type="text/javascript" src="jquery-1.6.2.min.js"/>"></script>
<script language="javascript">
$(document).ready(
    function(){
        $('#linkClick').click(
            function(){
                    $.ajax({
                        url: 'a.html',
                        data: {},
                        type: 'get',
                        dataType: 'json',
                        statusCode: {
                            404:function() { alert("404"); },
                            200:function() { alert("200"); },
                            201:function() { alert("201"); },
                            202:function() { alert("202"); }
                        },
                        success: function(data) {
                            alert( "Status: " + data);
                        }
                    });
                }); 
        }
        );
</script>
</head>
<body>
<a href="#" id="linkClick">click</a>
</body>
</html>