我想在我的控制器上公开2个新端点。 1具有添加单个实体的方法签名:
[HttpPost]
[Route("v1/entities")]
public IHttpActionResult AddEntity([FromBody] Entity entity)
另一个几乎相同,只是它接受IEnumerable来添加多个实体:
[HttpPost]
[Route("v1/entities")]
public IHttpActionResult AddEntities([FromBody] IEnumerable<Entity> entities)
显然,这不会起作用,因为它不知道要采取什么行动方法。那么我怎样才能解决这两个问题呢?我应该简单地将第二条路线重命名为&#34; v1 / entitieslist&#34;?
由于
答案 0 :(得分:0)
最简单的方法是将第一个更改为v1/entity
,因为您不处理多个问题。关于'纯'REST有一个有趣的讨论here,在做这类事情时是幂等的。我倾向于不使用批量POST,更喜欢一次POST一个。
答案 1 :(得分:0)
在你的情况下,我不担心纯REST。如果您有充分的理由在一次调用中创建多个实体,那么就这样做。
您有几个选择:
您只能创建一个带有对象列表的端点。您的列表也可以包含一个元素,因此这涵盖了两种情况。
您可以创建单独的端点,并且您已经知道如何执行此操作
最大的挑战将是决定你想要回归什么。在POST中,我更喜欢返回已创建资源的唯一标识符,但是当您进行批量创建时,某些可能会有效,有些可能会失败,因此您需要确定将要发生的情况并确保涵盖所有可能的方案。
你的实体相关吗?您想以某种方式创建实体并在第一次遇到问题时回滚吗?这些是您需要回答的问题