我想动态输入我的 Spring Restful url,该怎么做? 首先,在尝试创建动态网址之前,我先创建静态网址。这就是我所做的:
@RequestMapping(value = "/insert/{id}/{name}/{address}", method = RequestMethod.GET,headers="Accept=application/json")
public void insertsoheaderdinamis(@PathVariable String id, @PathVariable String name, @PathVariable String address) throws ParseException {
}
上面是我的静态网址代码。将来,我需要的是,我需要一个像这样的新路径变量localhost:8080/SpringServiceJsonSample/service/updatepool/insert/{这里是id}/{这里是名称}/{这里是地址}/{新变量为电话号码}/{此处为年龄}
。
我不想更改我的代码,所以我决定创建一个动态网址。当我在互联网上阅读时。
我正在尝试这样做:
@RequestMapping(value = "/insert/{path}/**", method = RequestMethod.GET,headers="Accept=application/json")
public void insertdynamicurl(@PathVariable("path") String path, HttpServletRequest request) throws ParseException {
}
但这不行,即使我在调试时也无法进入我的函数。它总是在我的控制台日志中给出“noHandlerFound”。如何正确执行 springrestful 服务的动态 url?
最佳答案
您可以查看URI Template Patterns with Regular Expressions建议在 @RequestMapping
注释中使用正则表达式。
@RequestMapping
注释支持在 URI 模板变量中使用正则表达式。语法为 {varName:regex}
,其中第一部分定义变量名称,第二部分定义正则表达式。例如:
@RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:\d\.\d\.\d}.{extension:\.[a-z]}")
public void handle(@PathVariable String version, @PathVariable String extension) {
// ...
}
}
除此之外,您还可以使用请求属性名称 HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE
来匹配 URL 字符串的其余部分,如下所示。
@RequestMapping("/{id}/**")
public void foo(@PathVariable("id") int id, HttpServletRequest request) {
String restOfTheUrl = (String) request.getAttribute(
HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
...
}
关于java - 如何动态指定Spring Restful WebService URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31715474/