在RESTful API的集合上使用PUT的优点和缺点

时间:2017-04-13 10:14:51

标签: rest api

背景

我正在制作一个RESTful API,和大多数API一样,我有元素和集合。在这种特定情况下,我有以下端点:

  • /api/v1/Countries GET //检索国家/地区集合
  • api/v1/Countries POST //在集合中添加新国家/地区
  • api/v1/Countries/:id GET //获取具有给定ID
  • 的国家/地区的信息

问题

因此,我的API允许用户添加和检查国家/地区的信息。但是如果我想要更新呢?

要做到这一点,我知道我必须使用PUT(我暂时不考虑PATCH)。

我有两种方法可以做到这一点:

  • api/v1/Countries PUT //更新国家/地区列表
  • api/v1/Countries/:id PUT //使用给定ID
  • 更新国家/地区

在我的阅读中,这是我发现的:

  • 提倡使用两者的人说它允许灵活性,因为在集合中使用PUT将允许用户一次更新多个Country元素。

  • 提倡反对使用两者的人说,这样你将有一个API,多个端点会做同样的事情(因为你现在可以通过集合更新国家或元素)并且这是API设计中的一个主要错误。

问题

  1. 我缺少其他任何利弊吗?
  2. 是否有明确的“你应该这样做”答案,还是依赖?
  3. 如果我必须选择一个或另一个,我应该在哪些情况下使用Collections方法,在哪种情况下我应该使用Elements方法?
  4. (OPT)你会怎么做,你会推荐哪些文献?

1 个答案:

答案 0 :(得分:0)

  1. 我认为你已经掌握了一切重要的事情。
  2. 当然不是,这是一个基于意见的问题。
  3. 我只会选择api/v1/Countries/:id中的PUT,因为我觉得让用户立刻将整个系列调到一边是危险的。
  4. 按照你感觉更舒服的方式,这将是最好的。