使用Angular JS的$ resource服务,有没有办法为资源的第二,第三等投票指定If-None-Match和ETag标头?
var SummarySearch = $resource(<<apiurl>>,
{ },
{
get: {
method: 'GET',
headers: {
'x-header': 'id'
}
}
});
我已经设置了一个常量标题(在这种情况下它只是x-header: id
),但是根据我上次看到的ETag,我需要根据请求而变化的内容。
更新
transformRequest
看起来很有希望,但我无权访问我发起请求的数据,或者数据最终的URL。据我所知,我只能访问我正在POST的主体(在我做GET时未定义)和headersGetter函数。
答案 0 :(得分:4)
我发现$ resource自己处理ETag。
当我发布这个问题时,我没有实现服务器方面的事情。我设置了If-None-Match处理服务器端,我不得不在客户端上使用$ http服务,但是在我现有的$ resource .get调用中尝试了它,它处理设置If-None-Match在我第一次轮询资源后自动收起标题。
我正在重用在安装过程中返回$ resource的1个实例。
我有真正的交易jQuery而不是jqLite。这就是设置If-None-Match的地方。
// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
if ( s.ifModified ) {
ifModifiedKey = ifModifiedKey || s.url;
if ( jQuery.lastModified[ ifModifiedKey ] ) {
jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] );
}
if ( jQuery.etag[ ifModifiedKey ] ) {
jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] );
}
}