gpt4 book ai didi

java - 如何在 Spring 3 MVC REST API 中继承 RequestMappings

转载 作者:IT老高 更新时间:2023-10-28 13:55:26 26 4
gpt4 key购买 nike

我正在尝试使用 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 的一部分的东西。

最佳答案

我相信这个问题之前已经被问及回答过:Spring MVC @RequestMapping Inheritance

也就是说,这是减少重复信息量的一种方法。我实际上并没有在我自己的代码中这样做,因为我认为将 URI 放在代码旁边更易于维护,即使这意味着一些重复。

@RequestMapping(URI_LIBRARY)
public interface LibraryNamespace {
public static String URI_LIBRARY = "/library/{libraryId}";
}

@RequestMapping(URI_BOOK)
public interface BookNamespace {
public static String URI_BOOK = LibraryNamespace.URI_LIBRARY + "/book/{bookId}";
}

@Controller
public class LibraryController implements LibraryNamespace {
@RequestMapping("")
public Library get(@PathVariable long libraryId) {
return service.getLibraryById(libraryId);
}
}

@Controller
public class BookController implements BookNamespace {
@RequestMapping("")
public Book get(@PathVariable long libraryId, @PathVariable long bookId) {
Library library service.getLibraryById(libraryId);
return library.getBookById(bookId);
}
}

由于我自己不会采用这种方法,因此我实际上没有尝试过这种解决方案!根据我对 Spring 的理解,我认为它应该可以工作......

关于java - 如何在 Spring 3 MVC REST API 中继承 RequestMappings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7228772/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com