代码之家  ›  专栏  ›  技术社区  ›  CaptTaifun

如何对“多个”和“单个”对象使用相同的端点?

  •  0
  • CaptTaifun  · 技术社区  · 3 年前

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

    [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)。有办法吗?

    1 回复  |  直到 3 年前
        1
  •  1
  •   Camilo Terevinto Chase R Lewis    3 年前

    不,没有办法,要么总是使用一个数组,要么使用两个端点。

    不幸的是,REST实际上并没有一个批处理操作的表示(比如一次创建/更新多个实体),所以使用哪个选项完全是自以为是的。