java - GET 请求使用哪些映射?

标签 java rest

我对应该代表我的 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} - 获取给定 titleauthor 的所有书籍

我预测,您可以有更多的搜索选项,所以我更喜欢另一个端点:

  • POST/book/search BODY: {"author": "aaa", "title": "bbb"} - 根据给定的搜索请求获取所有书籍(我们这里使用了body,所以我们不能在这里使用GET,因为GET请求在存活期间可以被网络的任何部分兑现) .

注意: 在我看来titleauthor 不是域对象,因此我不使用像 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/

相关文章:

java - 在 receive() 方法上获取按钮的操作,该方法是广播接收器的一种方法,但它显示为 null

javascript - 如何确保只有特定域可以从您的 REST api 查询?

javascript - 更新 : How to send Json Data as a POST request in Meteor using http package

java - JavaFX 计算器中的方程式问题

java - 字节从文件中读取错误?

java - Java 8 中可序列化 lambda 的性能

java - 如何在PropertyFile中指定user.home?

rest - OOZIE REST API RERUN - START 作业功能不起作用

php - 与 PHP 一起使用 Node 作为 REST 服务器

rest - 如何允许 POST 到 MVC5 Controller 以获取大量数据。