当前位置: 首页 > 知识库问答 >
问题:

REST API设计-单个通用endpoint或多个特定endpoint

宦烈
2023-03-14

或者我应该为每个汽车品牌提供一个单独的endpoint,它有一个具有该汽车品牌所需的确切属性的主体。

因此,在第一种方法中,我有一个endpoint,它有一个string参数,我希望它是一个具有所有必要值的JSON

PUT /api/v1/carBrands/

而在第二种方法中,在第二种场景中,每种汽车品牌都有一个endpoint,每个endpoint都有一个类型dto对象,表示它需要的所有值。

PUT /api/v1/carBrand/1
PUT /api/v1/carBrand/2
.
.
.
PUT /api/v1/carBrand/n

共有1个答案

公孙驰
2023-03-14

我想知道什么是更好的方法来设计这个API的endpoint。

根据您的示例,您似乎在询问资源设计,特别是应该使用一个大型资源还是一系列较小的资源。

Rest不能回答这个问题...反正不是直接的。REST所做的是确定缓存粒度在资源级别。如果有两条信息,并且希望其中一条的无效也使另一条无效,那么这些信息应该是同一资源的一部分,也就是说应该使用相同的URI访问它们。

/api/v1/carBrands#Ford
/api/v1/carBrands#Ferrari

/api/v1/carBrands/Ford
/api/v1/carBrands/Ferrari

在前一种情况下,我的缓存中有一个资源(/api/v1/carbrands);我对它所做的任何更改都将使整个资源无效。在后一种情况下,我缓存了两个资源;改变一个忽略另一个。

用一个或另一个都没有错;两者都很好,而且有很多历史。他们做出了不同的取舍,其中一个可能更适合你今天试图解决的问题。

 类似资料:
  • 我正在阅读JavaSDK1.3中的计时器 在POSA第2卷的“活动对象模式”中,它被提到如下 JDK1.3引入了一种机制,用于在Timer和TimerTaskjava.util.类中同时执行基于计时器的任务java.util.。当任务的预定执行时间发生时,它将被执行。调度调用在垫片线程中执行,而任务本身在Timer对象拥有的线程中执行。计时器内部任务队列受到锁的保护,因为上面概述的两个线程同时对其

  • 问题内容: 我正在建立一个网站,其中包含不同类型的项目,例如博客,帖子,文章等。用户可以将其中任何一个设置为他/她的最爱。现在,当我处理这个问题时,我有两个选择 为每种对象的用户收藏夹创建一个表。 为所有用户的所有类型的对象创建一个公用表。 第一种结构的问题是,我将不得不查询很多表以显示特定用户的收藏夹。但这将使我可以轻松地将收藏夹分为不同的类别。 但是,如果我必须在一个页面上显示所有收藏夹并将它

  • 让我们假设我们有两个微服务:Companys API和accounts API。 我们还有一个仪表板,显示一些关于accounts的数据和可视化。 小部件2-一个piechart,它按帐户的属性之一显示帐户的细分。 小部件3--另一个显示公司账户细分的图表。 理论上,仪表板中的所有小部件都显示关于相同实体-帐户的数据。 现在,我想问一下在UI中获取和显示帐户的两种方法: null null 我的问

  • 目前正在处理RESTAPI和GraphQL微服务的Express Gateway。GraphQL管道工作得很好,但RESTAPI的管道是我正在努力解决的问题。 我制作了一个简单的CRUD功能RESTAPI,它可以创建、读取、更新和删除书籍和作者。它们有多条路由来实现这一点,例如:http://localhost:4001/books/add。 问题是我并不真正理解如何在快速网关中转换这些路由或路径

  • null null 但是如何在应用程序中配置它,即哪种证书可以访问什么的这种映射? 谢谢。

  • 这是否可能在JMeter中开发一个测试计划,该计划将具有第一次测试的结果(一个ID),将在下一次测试中输入下一次测试等,最多4次测试,因为每个测试都会生成一个唯一的ID,并且这些ID中的每一个都相互依赖。每一个都相关如下:提交ID