![](/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.