我们的 API 设计中有一个资源集合,可以通过多种方式进行处理。例如,说这些是书。
这些书籍可以通过 ISBN、ISSN 进行唯一寻址,并且名称和颜色也是非唯一索引。我们如何建模一个 REST API,允许对可以多种方式指定的图书集合/项目进行 PATCH 操作?
例如,我们可能希望客户通过以下任何方式处理书籍
- 按书名
- 按书籍颜色
- 按图书 ISBN
- 按书名和颜色
如何在不创建多个端点的情况下执行此操作?
最佳答案
我会区分标识符和过滤器。 ISBN 和 ISSN 是标识符,因为它们是唯一的。一切非唯一的东西都是一个过滤器。标识符应该有自己的端点。这就是 ReST URL 的作用:唯一标识资源。
/books/isbn/{id}
/books/issn/{id}
这两者都保证会返回一本关于成功的书。其余字段可以组合成第三个端点。
/books?name=foo&color=blue&author=you
这个返回一个集合。
就修补而言,这三个都可以调用相同的服务方法来完成此操作。第三个端点将迭代其结果以重复调用 PATCHing 逻辑。
这确实意味着如果添加主键,端点数量会增加。我认为这仍然是RESTful。
关于api - 在 REST API 设计中以多种方式处理集合项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68392552/