RestAPI和域设计-最佳做法

问题描述 投票:1回答:1

我对域和Rest API设计的最佳实践有一些一般性问题。假设我们有一个域对象-客户,针对以下属性进行描述:id,名称,姓氏,产品。

当前,我们不在乎日期,而是通过以下URL提供当前状态的信息:/api/v1/customers/{id}

现在,在任何请求的日期都需要提供有关客户的信息,所以我想知道,创建URL的最佳方法是什么:1.应该是@PathVariable/api/v1/customers/{id}/{date}2.或通过@RequestParam/api/v1/customers/{id}?date=XXX

另一个问题是,我是否还应该更改域对象并添加一些其他字段,例如start_dt / end_dt /它们两者或它们中的任何一个(我只能更改我的数据库表,并查询历史表,所以这将是必需的仅更改数据库层,但不更改我的主要服务)。

什么是最佳解决方案?在此先感谢

java spring-boot rest spring-mvc restful-url
1个回答
0
投票

您应该使用选项II,即查询参数(或@RequestParam)。这是更好的选择,因为它以当前查询客户的方式保持向后兼容性。您指定了...

当前,我们不在乎日期

使用查询参数可使相同的端点与旧式请求兼容,同时扩展其功能以允许特定日期的查询。

关于开始日期和结束日期,答案取决于您要提供的内容。在大多数情况中,日期范围比单个日期有用,因此首选开始/结束系统。我会假设情况就是这样。

最优雅的方法是利用defaultValuedefaultValue属性。您可以将默认@RequestParam设置为时间的开始(通常为start_dt),将默认January 1, 1970设置为时间的结束(end_dt或1月31日,9999或正无穷大)。这样,如果用户未指定任何一个查询参数,API的功能将与之前完全相同(它将始终返回结果)。但是用户可以根据需要限制其时间范围。

© www.soinside.com 2019 - 2024. All rights reserved.