Tôi đang cố gắng xây dựng một API RESTful bằng cách sử dụng Spring MVC. Tôi đang chụp mã sạch và dễ quản lý nơi cấu trúc gói theo cấu trúc url.Cách kế thừa RequestMappings trong API REST MVC của mùa xuân 3
Vì vậy, đây là những gì tôi đã có:
// 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);
}
Trong khi làm việc này, tôi thấy nó lộn xộn và dễ bị lỗi để phải lặp lại "/ thư viện/{} libraryId "trong tất cả các @RequestMappings được thừa hưởng,/thư viện có khả năng là gốc của một phần lớn của API và nó phải được viết một lần và được tái sử dụng thay vì được viết ở khắp mọi nơi.
Tôi muốn viết lại sách lớp để một cái gì đó như thế này:
// 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);
}
Có cách nào mùa xuân có thể giúp tôi ở đây? Có thể chấp nhận cho tôi sử dụng thừa kế java bình thường, chú thích mùa xuân hoặc bất kỳ thứ gì khác giúp tôi không viết "/ library/{libraryId}" như một phần của mỗi url mà tôi từng viết.
Vâng, tôi biết khả năng đó và nó tốt hơn là chỉ chú thích các phương pháp nhưng vẫn còn một chặng đường dài từ hoàn hảo. –
Dựa trên câu trả lời của bạn rằng nó là một chặng đường dài từ hoàn hảo, không rõ ràng với tôi những gì bạn muốn. Bạn có thể hiển thị các url đầy đủ của một vài tài nguyên và mô tả (các) trình điều khiển nào bạn muốn chúng xử lý không? – SingleShot
Phải, đây có thể là ví dụ lạ nhưng ... '/ quốc gia/{countryCode}/bang/{stateCode}/city/{cityCode}/street/{streetCode}/number/{streetNumber}' mỗi các bước này (ví dụ, quốc gia, tiểu bang, thành phố, đường phố và số) nên đi vào Bộ điều khiển riêng của nó và mỗi bộ có một tập hợp các động từ trên chúng. Câu hỏi chính là khi tôi làm các numberController mà tôi sẽ không lặp lại url tất cả các cách từ quốc gia và tôi không wan't để "biết" rằng countryCode là chìa khóa để tài nguyên này. Tôi chỉ muốn "có" nó. –