Миграция с JAX-RS @Path на Spring MVC @RequestMapping с использованием регулярных выражений
Я пытаюсь перенести код из Jax-R (реализация джерси) в точку входа Spring MVC:
JAX-RS:
@GET
@Path("{bundle}/bundle{min: (-min)*}.{extension: js|css}")
public Response getBundle(@PathParam("bundle") String bundle, @PathParam("min") String min, @PathParam("extension") String extension)
Spring MVC:
@RequestMapping(method = GET, path = "{bundle}/bundle{min:(-min)?}{extension:\\.(js|css)?}")
public void getBundle(@PathVariable String bundle, @PathVariable String min, @PathVariable String extension)
Согласно документации Spring MVC, я могу использовать регулярные выражения для @RequestMapping
, Синтаксис похож на jaxrs, но точка входа не работает (404 Not Found).
Пример значения для точки входа: http://localhost:8080/foo/bundle-min.css
Я нашел решение с @RequestMapping(method = GET, path = "{bundle}/bundle**")
но я должен проанализировать строку, чтобы поймать мои необходимые значения параметров.
1 ответ
Ваше регулярное выражение выглядит хорошо, но замените эти группы захвата на группы без захвата, как показано ниже:
{bundle}/bundle{min:(?:-min)?}{extension:\.(?:js|css)?}
С этим регулярным выражением, если вы отправляете запрос foo/bundle-min.css
, bundle
было бы foo
, min
было бы -min
и extension
было бы .css
,