web-services - 创建允许不同类型标识符的 REST 服务的正确方法是什么?

标签 web-services rest

我需要创建一个 RESTful Web 服务,允许使用不同类型的 ID 来寻址实体。我会给你一个基于书本的例子(这不是我需要处理的,但我想通过这种方式建立一个共同的理解)。

书籍可以通过以下方式进行标识符:

  • ISBN 13
  • 身份证
  • 标题

我可以通过POST/api/v1/books/The%20Bible来创建一本书。稍后可以通过 ISBN /api/v1/books/12312312301 或 ID /api/v1/books/A9471IZ1 来寻址这本书。如果我以这种方式实现它,我需要分析发送的任何标识符并在内部进行转换。

将标识符类型添加到 URL 是否“合法”?喜欢 /api/v1/books/title/The%20Bible 吗?

最佳答案

看来您需要的不仅仅是检索资源,而是按某些条件(在您的情况下,按 ISBN、标题或 ID)搜索资源。在这种情况下,我不会让/books 端点变得复杂(理想情况下,应该只按 ID 返回书籍),而是创建一个单独的/search 函数。然后您可以使用它按任何领域搜索书籍。

例如,您将:

GET /search?title=bible

GET /search?isbn=12312312301

它甚至可以轻松扩展以在以后添加更多字段。

关于web-services - 创建允许不同类型标识符的 REST 服务的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29913701/

相关文章:

java - wsimport Xauthfile 错误

php - 如何在私有(private)和仅限成员的情况下构建一个 Restful api?

c# - 将大型 xml 上传到 WCF REST 服务 -> 400 错误请求

arrays - 通过 requestJS 发送 JSON 对象和图像文件数组的 POST 请求

rest - ContainerRequestContext abortWith() 不会中止

java - 启用 SSL 的 Tomcat 上的非 SSL Web 服务

c# - 在 Visual Studio 中调试 WebService : Could not load file or assembly

发布数据时,IOS8 参数未附加到 URL

android - 即使在 Android 和 .NET 中输入相同的字符串后也会有两个不同的哈希值

rest - Strongbox 有 REST API 吗?在哪里可以找到规范?