URL в качестве параметра пути в restful api вызывает неверный запрос - PullRequest
2 голосов
/ 31 октября 2011

Мы разрабатываем успокоительный API, используя jersey (1.9.1) и tomcat 5.5.Данный ресурс идентифицируется с помощью урны, и мы хотели бы обратиться к конкретному экземпляру этого ресурса.Чтобы достичь этого, мы использовали следующий код:

@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%3A%2F%2Fns.something.com%2FXXX%2F2

Декодированныйзначение параметра пути должно быть: http://ns.something.com/XXX/2

Однако, когда я делаю запрос, используя закодированный URL, я получаю сообщение о плохом запросе от tomcat.Итак, мои вопросы:

  • Правильно ли использовать Urn в качестве параметра пути?
  • Почему Tomcat рассматривает этот запрос как неверный запрос?

На всякий случай я изменил сигнатуру метода так, чтобы параметр был взят из строки запроса, и он работал нормально, но я хочу, чтобы параметр был частью пути.

Спасибо.

1 Ответ

5 голосов
/ 31 октября 2011

Хорошо, я решил это, добавив следующую строку в catalina.properties :

org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH = true

...