如何对 "multiple" 和 "single" 对象使用相同的端点?

How can I use the same endpoint for "multiple" and "single" objects?

我有一个 .NET Core 5 项目 (Rest API),其中包含一个带有端点 (AddOrUpdate) 的控制器 (TestController)。端点的签名如下所示:

[HttpPost, HttpPut]
public virtual IActionResult AddOrUpdate(params TDatabaseModel[] entities).

它本身就可以工作,但现在我总是必须在 JSON 中指定 TDatabaseModel 的列表。现在我想创建另一个端点,它只接受一个 TDatabaseModel,以防止创建列表。签名看起来像这样:

[HttpPost, HttpPut]
public virtual IActionResult AddOrUpdate(TDatabaseModel entity)

现在的问题是,只要我在 JSON 主体中指定单个对象(不是列表),就会出现异常。异常是指端点“不明确”的事实。我还尝试用“params”从端点中列出 TDatabaseModel 的列表,但即便如此,它仍然是模棱两可的。

我的问题:有没有办法在不使用不同端点路由的情况下同时传递单个对象和对象列表?所以我不想最终使用不同的路由 (HttpPost:{{URL}}/single && HttpPost:{{URL}}/multiple)。有什么办法吗?

不行,没办法,要么一直用数组,要么用两个端点。

不幸的是,REST 并没有真正的批处理操作表示(例如 creating/updating 一次多个实体),所以选择哪个选项完全是自以为是。