【发布时间】:2011-11-05 22:12:25
【问题描述】:
我正在尝试使用 Spring MVC 构建一个 RESTful API。我正在寻找干净且易于管理的代码,其中包结构遵循 url 结构。
这就是我所拥有的:
// com.test.api.library
@RequestMapping("/library/{libraryId}")
public Library getLibrary(@PathVariable long libraryId) {
return service.getLibraryById(libraryId);
}
// com.test.api.library.book
@RequestMapping("/library/{libraryId}/book/{bookId}")
public Book getBook(@PathVariable long libraryId, @PathVariable long bookId) {
Library library service.getLibraryById(libraryId);
return library.getBookById(bookId);
}
虽然这可行,但我发现必须在所有继承的 @RequestMappings 中重复“/library/{libraryId}”很麻烦且容易出错,/library 很可能是 API 很大一部分的根目录,它应该写一次就重复使用,而不是到处写。
我想把 book-class 改写成这样:
// com.test.api.library.book
@RequestMapping("/book/{bookId}")
public Book getBook(@PathVariable long bookId) {
// long libraryId magically given to me from the library-class's getLibrary()
Library library service.getLibraryById(libraryId);
return library.getBookById(bookId);
}
Spring 有什么办法可以帮助我吗?我可以使用普通的 java 继承、spring 注释或任何其他帮助我不写“/library/{libraryId}”作为我写过的每个 url 的一部分的东西。
【问题讨论】:
标签: java spring spring-mvc