#rest #jersey #jax-rs #tomcat5.5
#rest #джерси #джакс-рс #tomcat5.5
Вопрос:
Мы разрабатываем restful api с использованием jersey (1.9.1) и tomcat 5.5. Данный ресурс идентифицируется с urn, и мы хотели бы обратиться к конкретному экземпляру этого ресурса. Для достижения этой цели мы использовали следующий код:
@Path("/XXXs")
public interface XXXResource {
@GET
@Path("{id}")
@Produces({ MediaType.APPLICATION_JSON })
XXXInfo getXXX(@PathParam("id") String id);
}
Идея состоит в том, чтобы обратиться к этому ресурсу, используя следующий URL:
http://localhost:8080/restapi/XXXs/http://ns.something.com/XXX/2
Значение параметра декодированного пути должно быть: http://ns.something.com/XXX/2
Однако, когда я делаю запрос, используя закодированный URL, я получаю сообщение о неправильном запросе от tomcat. Итак, мои вопросы:
- Правильно ли использовать Urn в качестве параметра пути?
- Почему tomcat рассматривает этот запрос как неверный запрос?
На всякий случай я изменил сигнатуру метода, чтобы параметр брался из строки запроса, и он работал нормально, но я хочу, чтобы параметр был частью пути.
Спасибо.
Ответ №1:
Хорошо, я решил это, добавив следующую строку в catalina.properties:
org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true