Сбой Spring Framework HttpRequestHandler - PullRequest
0 голосов
/ 29 марта 2010

У нас есть приложение, которое связывается через REST-запросы, сделанные клиентами.

REST-запросы содержат «имя региона» и «ID» в качестве параметров

Итак, запрос будет выглядеть примерно так (для DELETE)

http://host:port/regionnameID  

Эти запросы REST между регионами в федерации имеют правильную кодировку URL

Я считаю, что эти запросы не выполняются, если в имени региона есть косая черта ("/").

Тогда запрос будет выглядеть так

http://host:port/region/nameID  

Это связано с неправильной интерпретацией Rest URL URL-адресом HttpRequesthandler, когда в названии региона присутствует символ «/».

Теперь у нас нет контроля над клиентами, отправляющими запрос REST с "/" в имени региона.

Существует ли какой-либо метод / конфигурация / обходной путь, который можно сделать, чтобы предотвратить возвращение HttpRequestHandler 404

Ответы [ 3 ]

1 голос
/ 29 марта 2010

вам следует переписать ваши URL с помощью urlrwrite и использовать внутренние параметры запроса.

<rule>
 <name>Inbound:</name>
 <from>^(.*)ID$</from>
 <to last="true">delete?regionName=$1</to>
</rule>

Добавьте свой urlrewrite Filter перед всеми другими фильтрами в web.xml

0 голосов
/ 29 марта 2010

Это немного грязная проблема. Здесь я бы попытался использовать аннотацию Spring @RequestMapping. Здесь есть некоторая документация: http://static.springsource.org/spring/docs/2.5.x/reference/mvc.html

Вы можете указать подстановочные знаки муравья в значении, которое вы передаете @RequestMapping. Если у вас ограниченное количество регионов, вы можете сопоставить их все одному методу следующим образом: @RequestMapping (значение = { "/ REGION1 **", "/ REGION2 **", "/ регионе3 **")

В вашем методе контроллера вам нужно будет добавить дополнительную логику для разбора nameID.

Если у вас большое количество регионов, я бы создал отдельное веб-приложение Spring (сервлет) только для обработки этих запросов. Это приложение будет иметь кэшированную таблицу поиска регионов.

0 голосов
/ 29 марта 2010

Сконфигурируйте свой собственный обработчикMapping bean (возможно, на основе AbstractUrlHandlerMapping )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...