Миграция с 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,

Другие вопросы по тегам