Реализация HTTP-заголовка If-Match в Spring - PullRequest
3 голосов
/ 08 марта 2012

ShallowEtagHeaderFilter , который является частью Spring, обрабатывает заголовок If-None-Match в запросе Http.Как часть спецификации Http 1.1, возвращается статус Http 304 - Не изменено, если содержимое заголовка If-None-Match, отправленного по запросу, совпадает с заголовком Etag.Это полезно для кэширования, поскольку означает, что если Etag одинаков на клиенте и сервере, то содержимое будет идентичным.

Это нормально.

Однако мой вопрос таков:В Spring есть поддержка заголовка If-Match (снова часть HTTP 1.1), а не If-None-Match, потому что с точки зрения документации похоже, что ShallowEtagHeaderFilter обрабатывает только заголовок If-None-Match.Мне нужен заголовок If-Match, чтобы одновременные запросы не перезаписывали предыдущий.IE Я хочу, чтобы запрос обрабатывался только в том случае, если Etags одинаковы, и, следовательно, они имеют самую последнюю версию объекта.

1 Ответ

1 голос
/ 11 января 2013

Не похоже, что ShallowEtagHeaderFilter поддерживает If-Match:

curl "Accept: application/json" -H 'If-Match: "somevalue"' -i http://localhost:8080/rest-sec/api/resources/1

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
ETag: "03cb37ca667706c68c0aad4cb04c3a211"
Content-Type: application/json;charset=UTF-8
Content-Length: 56
Date: Fri, 11 Jan 2013 14:58:40 GMT

Я открыл проблему JIRA для отслеживания этого: https://jira.springsource.org/browse/SPR-10164

...