Я пытаюсь создать RESTful API с помощью Spring MVC. Я снимаю для чистого и управляемого кода, где структура пакета следует структуре 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);
}
Пока это работает, я считаю бесполезным и подверженным ошибкам повторять "/library/{libraryId}" во всех унаследованных @RequestMappings,/library, вероятно, будет иметь корни из большой части API, и это должны быть записаны один раз и повторно использованы, а не везде.
Я хотел бы переписать книжный класс на что-то вроде этого:
// com.test.api.library.book
@RequestMapping("/book/{bookId}")
public Book getBook(@PathVariable long bookId) {
// long libraryId magically given to me from the library-class getLibrary()
Library library service.getLibraryById(libraryId);
return library.getBookById(bookId);
}
Есть ли способ Spring помочь мне здесь? Для меня приемлемо использовать нормальное наследование java, аннотацию Spring или что-то еще, что помогает мне не писать "/library/{libraryId}" как часть каждого URL, который я когда-либо пишу.