我需要创建一个 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/