Если метод REST API терпит неудачу, должен ли я возвращать сообщение о состоянии HTTP 200, 400 или 500?

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

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

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

однако следует иметь в виду, что большинство людей используют фреймворк, такой как 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>