在REST代理和/或存储中访问自定义响应头?

我已经学会了如何为这个问题添加自定义头文件到Ext-JS请求中:

带有ExtJS 4商店的HTTP头

而现在,我正试图解决问题是用户错误时的异常处理问题。 这个问题在这里处理:

了解REST:动词,错误代码和认证

其中一个答案建议映射到最接近的HTTP错误代码,然后使用自定义响应头将异常信息传回客户端。

我强烈建议不要扩展基本的HTTP状态代码。 如果您找不到与您的情况完全匹配的人,请选择最接近的人并将错误详细信息放入响应主体中。 另外,请记住HTTP标头是可扩展的; 您的应用程序可以定义您喜欢的所有自定义标题。 例如,我工作的一个应用程序可能会在多种情况下返回404 Not Found。 我们只是添加了一个新的头部X-Status-Extended,它包含我们专有的状态码扩展,而不是让客户端解析响应主体。 所以你可能会看到如下的回应:

HTTP/1.1 404 Not Found
X-Status-Extended: 404.3 More Specific Error Here

我很喜欢这个想法。 但无法弄清楚,在ExtJS中,我可以访问此自定义响应头来提取异常消息。


Response对象有一个getAllResponseHeader()方法,您可以使用该方法访问所有标题键值对。

在Extjs中,你可以做这样的事情:

Ext.Ajax.request({
    url: 'www.microsoft.com',
    method: 'GET',
    failure: function(response){
        console.log(response.getAllResponseHeaders());
     }
});​

这将返回一个包含此信息的实例:

connection: "keep-alive"
content-encoding: "gzip"
content-type: "text/html; charset=utf-8"
date: "Thu, 13 Dec 2012 03:10:15 GMT"
server: "nginx/0.8.54"
transfer-encoding: "chunked"
vary: "Cookie"

在你的情况下,你应该做到以下几点:

    failure: function(response){
        var header = response.getAllResponseHeaders(),
            statusEx = header['X-Status-Extended'];

        if(statusEx === '404.3 More Specific Error Here'){
            // do something here
        }
     }
链接地址: http://www.djcxy.com/p/45361.html

上一篇: Accessing custom reponse headers within REST proxy and/or store?

下一篇: PUT method with @FormParam