Если метод 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>