У меня есть приложение на основе Restlet, и я пытаюсь использовать ресурсы клиента Restlet для проверки определенных его частей.Состояние ресурса клиента-клиента «не изменено»
С момента обновления с Restlet 2.2.3 до 2.3.4 мои тесты проверки ETag начали сбой. Вот как я добавлял заголовок в старой версии:
Series<Header> headers = (Series<Header>) currentClientResource.getRequest().getAttributes().get("org.restlet.http.headers");
if (headers == null) {
headers = new Series<Header>(Header.class);
}
headers.add("If-None-Match", "\"" + eTag + "\"");
currentClientResource.getRequestAttributes().put("org.restlet.http.headers", headers);
Тогда при вызове представления() снова на обернутую clientResource я получаю 304 Not Modified ответа (который является то, что я хочу).
В 2.3.4 это привело к возврату 200 OK вместо этого, и я заметил сообщение журнала о том, что напрямую не задавать заголовок If-None-Match. Вместо этого я сейчас пытаюсь это:
currentClientResource.getRequest().getConditions().getNoneMatch().add(new Tag(eTag));
Однако это по-прежнему дает мне 200 OK. Если я сделаю запрос вручную через REST-клиент, я могу получить 304 Not Modified, поэтому сервер по-прежнему делает правильное поведение. Что мне нужно сделать в тестах, чтобы увидеть, что я хочу видеть?
лишь несколько замечаний. Вы можете напрямую вызвать currentClientResource.getRequest(). GetHeaders(), если вы хотите добавить «дополнительные заголовки». Большинство заголовков доступны через API, что соответствует «If-None-match» (используя метод currentClientResource.getRequest(). GetConditions()). Мы рекомендуем использовать API вместо использования заголовков, потому что это может помочь переключиться на другой тип протокола. –