如果REST API方法失败,我应该返回200,400或500 HTTP状态消息吗?

时间:2012-02-19 00:45:36

标签: ajax api http-headers

当用户向我的API提交无效数据时(通常是通过Javascript + JSON),我想知道我应该回复哪个HTTP response code

我是否应该返回带有错误的HTTP 200响应 - 或者我的服务器是否应该响应400或500错误,因为由于某些错误数据请求实际上未通过验证?

似乎400错误是要走的路,因为“4xx类状态代码适用于客户端似乎错误的情况” - wikipedia

但是,要记住的一件事是大多数人使用像jQuery这样的框架,当AJAX请求响应除200以外的任何状态代码时,需要您指定备用回调。

1 个答案:

答案 0 :(得分:8)

  

400 Bad Request由于语法格式错误,服务器无法理解该请求。客户不应该在没有修改的情况下重复请求。

在jquery ajax调用中使用statusCode:

<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>