api - 在 REST API 设计中以多种方式处理集合项

标签 api rest http design-patterns patch

我们的 API 设计中有一个资源集合,可以通过多种方式进行处理。例如,说这些是书。

<表类=“s-表”> <标题> 名称 ISBN ISSN 颜色 <正文> Foo 1 2 蓝色 栏 4 5 黑色 巴兹 7 8 棕色

这些书籍可以通过 ISBN、ISSN 进行唯一寻址,并且名称和颜色也是非唯一索引。我们如何建模一个 REST API,允许对可以多种方式指定的图书集合/项目进行 PATCH 操作?

例如,我们可能希望客户通过以下任何方式处理书籍

  1. 按书名
  2. 按书籍颜色
  3. 按图书 ISBN
  4. 按书名和颜色

如何在不创建多个端点的情况下执行此操作?

最佳答案

我会区分标识符和过滤器。 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/

相关文章:

java - @PatchMapping 的用例

api - 应用程序的 Shopify 自定义设置页面

api - 如何在 Google+ 墙上发帖

java - Android Apk 中暴露的 Google 地理位置 Api key

ios - 模型和 Controller 之间的通信 - iOS

http - 当资源被禁止但有替代资源时,HTTP 响应应该是什么?

api - 放心: charset issue - Passing valid contentType using rest assured is not recognized and giving error as Content Type is not valid

eclipse - 如何使用 IP 和端口访问 JBOSS Restful Web 服务

java - Jersey:是否有一种干净的方法来指定允许的 URL 扩展?

http - 在服务器上使用无状态的 Spring Web Flow