使用regex从JAX-RS@Path迁移到Spring-MVC@RequestMapping
我正在尝试将代码从Jax Rs(jersey实现)迁移到Spring MVC入口点: jax-rs:使用regex从JAX-RS@Path迁移到Spring-MVC@RequestMapping,spring,spring-mvc,jax-rs,request-mapping,Spring,Spring Mvc,Jax Rs,Request Mapping,我正在尝试将代码从Jax Rs(jersey实现)迁移到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)
@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)
根据,我可以将regex用于@RequestMapping
。语法类似于jaxrs,但入口点不起作用(404未找到)
入口点的值示例:http://localhost:8080/foo/bundle-min.css
我已经找到了一个带有
@RequestMapping(method=GET,path=“{bundle}/bundle**”)
的解决方案,但我必须解析字符串以捕获所需的参数值。您的正则表达式似乎很好,但用非捕获组替换那些捕获组,如下所示:
{bundle}/bundle{min:(?:-min)?}{extension:\.(?:js|css)?}
使用此正则表达式,如果您向foo/bundle-min.css
发出请求,bundle
将是foo
,min
将是-min
,而扩展名将是.css