我对应该代表我的 RESTful 应用程序的 URI 有疑问。 我已经阅读了很多关于不同资源的主题,但我仍然不确定我应该如何实现以下情况:
我的 Controller 中有 3 个方法:
List<Books> getAllBooks()
List<Books> getBooksByTitle(String title)
List<Books> getBooksByAuthor(String author)
很明显,我应该为第一种方法选择 "/books"
URI,但是如果我映射 "/books/title?"
或 "/books/author?"
对于下一个方法,抛出异常“模糊映射”。 "/books/title/"
和 "/books/author/"
似乎不是一个好的选择。
我可以建议什么解决方案?
最佳答案
GET/book
- 获取所有书籍GET/book/{id}
- 获取一本具有特定id
的书
GET/book?title={title}&author={author}
- 获取给定title
和author
的所有书籍
我预测,您可以有更多的搜索选项,所以我更喜欢另一个端点:
POST/book/search
BODY: {"author": "aaa", "title": "bbb"} - 根据给定的搜索请求获取所有书籍(我们这里使用了body,所以我们不能在这里使用GET
,因为GET
请求在存活期间可以被网络的任何部分兑现) .
注意: 在我看来,title
或 author
不是域对象,因此我不使用像 GET/book/author/{author}
或 GET/book/title/{title}
这样的端点。 但是我不介意为一本书使用端点,例如:
GET/book/{id}/author
- 获取给定书籍的所有作者GET/book/{id}/title
- 获取给定书籍的标题
希望我已经回答了您的问题。
关于java - GET 请求使用哪些映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50062371/