如何命名与REST中的多个实体相关的控制器?

How do I name controllers which are related to multiple entities in REST?

提问人:Jamil 提问时间:9/15/2023 更新时间:9/19/2023 访问量:49

问:

我想重命名和重新路由控制器以使它们更加“RESTful”,但我遇到了一个问题。假设我有,路线是 。然后我有 VersionsController、.我也有,这是一个单独的实体。我还有一个带有此路由的控制器:例如,获取特定版本的项目(或涉及与特定版本相关的项目操作的任何内容),我不知道如何正确命名它,因为看起来很丑。对于这种情况,是否有命名约定或某种最佳实践?ItemsControllerapi/itemsapi/versionsVersionItemsConrollerapi/versions/{versionId:int}/itemsVersionItemsMappingController

ASP.NET-MVC REST 控制器 命名约定命名

评论

0赞 Mark Seemann 9/15/2023
作为快速反应,也许人们应该质疑为什么既有资源又有资源?这难道不会让 API 的用户感到困惑吗?itemsversions/123/items
0赞 Mohammad Aghazadeh 9/15/2023
您不需要为特定版本创建操作,只需使用特定路由创建操作即可。controllerItemscontroller/api/items/10/version/1
0赞 Jamil 9/15/2023
@MarkSeemann Items 是一个基本的 crud,具有 get、post、put 和 delete。versions/{id}/items 用于非基本 CRUD 且与特定版本的项相关的操作。老实说,不确定令人困惑的部分
0赞 Jamil 9/15/2023
此处@MohammadAghazadeh版本是业务实体,而不是 API 版本
0赞 Mohammad Aghazadeh 9/15/2023
我也明白它是一个实体,我给出的 ROUTE 是正确的 如果我想将 API 版本添加到其中,我会写:/api/v1/items/10/version/1

答:

2赞 Denis Kiryanov 9/19/2023 #1

由于是关于获取特定版本的项目,因此最好将适当的方法放在 .api/versions/{versionId:int}/itemsVersionsController

因此,整个结构将如下所示:

ItemsController:

  • api/items

版本控制器:

  • api/versions
  • api/versions/{versionId:int}/items

VersionItemsConroller:

  • api/version-tems