Можно ли переслать запрос, изменив метод запроса? - PullRequest
2 голосов
/ 28 декабря 2010

Я тщательно прорабатываю шлюз, который разрешает только запросы GET, в то время как конечные точки REST за ним могут принимать широкий спектр методов (POST, PUT, DELETE, OPTIONS). Поэтому я пытаюсь передать метод запроса в качестве параметра, имеющего фильтр, который перенаправляет запрос с правильным методом. Из того, что я вижу в спецификации, разрешено пересылать запрос только без каких-либо изменений:

request.getRequestDispatcher(route).forward(request, response)

Есть ли обходные пути?

ПРИМЕЧАНИЕ. Перенаправление не подходит для меня.

1 Ответ

1 голос
/ 28 декабря 2010

Если у вас есть один сервлет Rest, который обрабатывает остальные службы (и это обычно так), вы можете расширить его и переопределить метод service. Там вы можете вызывать doPost(..), doPut(..) и т. Д. В зависимости от желаемого параметра. Реализация по умолчанию HttpServlet использует request.getMethod().

Еще одна вещь, которую вы можете сделать (менее предпочтительно), - это заставить ваш фильтр запускать новый запрос к конечной точке, используя URL.openConnection (или apache commons http компоненты), и передавать результат этого внутреннего запроса обратно клиенту. Там вы можете указать способ запроса.

Во всяком случае, я думаю, что вы должны попытаться преодолеть ограничение ваших ворот, потому что это ставит вас в действительно неловкое положение.

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