![](/img/trans.png)
[英]Mapping request params/ path variable to Dto in GET request in Spring
[英]Spring request mapping to a different method for a particular path variable value
@Controller
@RequestMapping("/authors")
public class AuthorController {
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public Author getAuthor(
final HttpServletRequest request,
final HttpServletResponse response,
@PathVariable final String id)
{
// Returns a single Author by id
return null;
}
@RequestMapping(value = "/{id}/author-properties", method = RequestMethod.GET)
public AuthorProperties getAuthorProperties(
final HttpServletRequest request,
final HttpServletResponse response,
@PathVariable final String id)
{
// Returns a single Author's List of properties
return null;
}
@RequestMapping // How to map /authors/*/author-properties to this method ????
public List<AuthorProperties> listAuthorProperties(
final HttpServletRequest request,
final HttpServletResponse response)
{
// Returns a single Author's List of properties
return null;
}
}
class Author {
String propertiesUri;
// other fields
}
class AuthorProperties {
String authorUri;
// other fields
}
基本上我需要:
当我尝试
@RequestMapping(value = "/*/author-properties", method = RequestMethod.GET)
它仍将map /authors/*/author-properties
映射到getAuthorProperties方法,路径变量值为“*”。
看看这是否有效
@RequestMapping(value = "/{id:.*}/author-properties", method = RequestMethod.GET)
您可以使用正则表达式约束单个作者的映射,例如:
@RequestMapping("/{authorId:\\d+}/author-properties")
public String authorProperties(@PathVariable String authorId) {}
这仅匹配作者ID为数字的URL。
对于所有作者属性的请求,您可以使用:
@RequestMapping("/*/author-properties")
public String allProperties() { }
Hovewer *
具有特殊含义,因此它也会匹配/foo/author-properties
。 要解决它,你可以使用类似的东西:
@RequestMapping("/{all:\\*}/author-properties")
public String allProperties() { }
如果为所有作者提取AuthorProperties列表是常见的情况,那么我认为你应该创建一个这样的URI:“/ author-properties”。 否则Bohuslav给出的答案就是你想要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.