C# 填充组合框的Web API方法?

C# 填充组合框的Web API方法?,c#,.net,asp.net-web-api,asp.net-core,C#,.net,Asp.net Web Api,Asp.net Core,在我的AngularJSweb应用程序中,有一堆需要填充的组合框。对于前端,我需要的唯一数据是键、值对列表 问题在于后端:为了填充这些列表,我生成了一个提供“事物列表”的Web API端点 路由是/api/list/{id} 根据{id}的值,它将返回用户,帐户,书籍,汽车。。。与键、值相同。例如,对于Id=1,它将返回一个汽车列表: {1, "Ford" }, {1, "Toyota"}, {3, "Honda" } ... 这将是完美的填充组合框 所以。。。我在控制器的方法中有一个大开关,

在我的AngularJSweb应用程序中,有一堆需要填充的
组合框。对于前端,我需要的唯一数据是键、值对列表

问题在于后端:为了填充这些列表,我生成了一个提供“事物列表”的Web API端点

路由是
/api/list/{id}

根据
{id}
的值,它将返回
用户
帐户
书籍
汽车
。。。与键、值相同。例如,对于Id=1,它将返回一个汽车列表:

{1, "Ford" }, {1, "Toyota"}, {3, "Honda" } ...
这将是完美的填充组合框

所以。。。我在控制器的方法中有一个大开关,用于确定应该返回哪种类型的列表

我觉得这对于后端来说真的很脏,尽管对于前端来说很方便。只要用不同的魔术号码调用同一个端点,我就会得到不同的列表


我的问题:对于这种情况,有更好更干净的方法吗?

这通常会按数据类型划分为控制器,即
UserController
AccountController
等。然后每个控制器都会有自己的操作
列表
。 稍后,如果需要,将向每个控制器添加额外的操作(创建/删除/等等),并且一切都保持干净。 在前端,您需要更改代码,不将幻数作为参数发送,而是作为地址的一部分发送:

  • /api/用户/List/{id}
  • /api/帐户/List/{id}

您可以使用属性路由将id映射到特定操作

ID为1的第一个操作:

[Route("/api/list/1")]
ID为2的第二个操作:

[Route("/api/list/2")]

IMO保持控制器精简,并创建一个BigSwitchService(或任何您将称之为它的东西),将其注入控制器中。在服务中保留所有逻辑。关于api设计,可能不是最干净的api,但是如果它能节省你很多时间,那么你应该使用它。我不认为这能满足他的需要。他想要相同的url和不同的号码。至少这是我从他写的文章中了解到的。只要用不同的幻数调用同一个端点,我就会得到不同的列表。@pitaridis我不一定需要幻数。相反,我想知道,像这样将所有列表集中在一个端点中是个好主意。你会那样做还是照影子说的去做?把所有的事情都放在一个动作里不是一个好主意。最好将其拆分为多个操作。