Отправка ETag с $ ресурсом
Используя сервис $ resource Angular JS, есть ли способ указать заголовки If-None-Match и ETag для второго, третьего и т. Д. Опросов ресурса?
var SummarySearch = $resource(<<apiurl>>,
{ },
{
get: {
method: 'GET',
headers: {
'x-header': 'id'
}
}
});
Я получил это, чтобы работать для установки постоянного заголовка (это просто x-header: id
в этом случае), но мне нужно что-то, что варьируется в зависимости от запроса, основываясь на ETag, который я видел в последний раз.
Обновить:
transformRequest
Выглядело многообещающе, но у меня нет доступа к данным, с которых я инициировал запрос, или к URL-адресу, по которому эти данные оказались. Насколько я могу судить, у меня есть только доступ к телу, которое я буду отправлять (не определено в моем случае, так как я делаю GET) и функцию headersGetter.
1 ответ
Я обнаружил, что $resource обрабатывает ETags самостоятельно.
Когда я отправил этот вопрос, я не реализовал серверную часть вещей. Я настроил If-None-Match на стороне сервера, решив, что мне нужно будет просто использовать службу $ http на клиенте, но попробовал это с моим существующим вызовом $resource.get, и он обрабатывает настройку If-None-Match Заголовок автоматически после моего первого опроса ресурса.
Я повторно использую 1 экземпляр, который $resource вернул во время установки.
редактировать
И у меня есть реальная сделка 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 ] );
}
}