Spring - абстрактное отображение URL для обработки общих параметров URL - PullRequest
0 голосов
/ 29 ноября 2011

Примите следующие настройки:

У нас есть несколько команд, сопоставленных с разными URL, каждая из которых имеет свое собственное тело, которое мы можем записать с помощью сопоставлений, например:

@RequestMapping(value = "url1/{param}/command", method = RequestMethod.POST)
@ResponseBody
public Response command1(@PathVariable("param") String param,
                         @RequestParam(value = urlParam) Param urlParam,
                         @RequestBody Request request) {
    ...}

У нас есть несколько случаев, когда один и тот же параметр повторяется в нескольких URL-адресах, в частности, в параметре URL. Поскольку у нас есть несколько таких переменных, сегодня мы вручную добавляем их в каждое отображение, которое подвержено ошибкам и слишком многословно.

Есть ли в любом случае маршрутизация всех сопоставлений через начальное сопоставление, захват всех этих параметров url и, таким образом, удаление беспорядка из всех других сопоставлений?

1 Ответ

0 голосов
/ 29 ноября 2011

Если вы переключаетесь с Spring MVC на любую среду JAX-RS (например, Джерси, Apache Wink), вы можете использовать подресурсы:

@Path("/parent/{id}")
class ParentResource {


  @Path("/child1")
  Child1Resource getChild() {
  ....
  }

  @Path("/child2")
  Child2Resource getChild() {
  ....
  }
}

Обратите внимание, что методы с аннотациями @Path не аннотируются HTTPМетоды, поэтому любой соответствующий HTTP-запрос, соответствующий URL-адресу, будет распространяться на подресурсы.

Еще одно предложение по сокращению ошибки: используйте константы (public final static String) в качестве параметров как при создании URL-адреса, так и прииспользуйте параметр.Это делает его немного более многословным, но уменьшает вероятность ошибок.Может использоваться как с Spring-MVC, так и с JAX-RS.Не забывайте, что можно поместить константы в значения аннотаций.

Надеюсь, это поможет.

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