В случае сбоя метода REST API я должен вернуть сообщение о статусе HTTP 200, 400 или 500? - PullRequest
11 голосов
/ 19 февраля 2012

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

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

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

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

1 Ответ

8 голосов
/ 19 февраля 2012

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

использовать 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...