如何通过RESTful接口管理池

时间:2017-02-20 21:45:16

标签: rest api methods restful-architecture pool

由于我不确定我最初是否提出了这个问题,我正在重申它是否有更好的回应。

我遇到了如何使用RESTful API管理特定种类集合的问题。为了帮助说明我遇到的问题,我将使用一个简单的人工示例。让我们称之为'抽奖券选择器'。对于这个问题,我只对如何执行一个功能感兴趣。

  1. 我有一系列未购买的抽奖券(抽奖活动)。每个都有一个独特的抽奖号码和其他信息。
  2. 我需要能够从raffleTickets集合中获取已识别数量的票证(numTickets),而无需单独选择它们。该集合本身具有随机选择机制。
  3. 结果是我从该集合中返回了5张唯一的票证,并且该集合的大小减少了5,因为已经删除了5张返回的票据。
  4. 问题是,我如何以RESTfull方式进行? 我直觉上想做 METHOD ... / raffelTickets?numTickets = 5但是要努力使用哪种HTTP方法

    回答;你不能建议我只是通过标记它们来修改状态以实现删除。它必须导致集合的基数实际发生变化。

    注意: 调用方法两次将每次返回不同的结果集,并且将始终更改执行它的集合(除非它是空的!)< / p>

    那么我应该使用什么方法?放? POST?删除?补丁?相同的限制似乎只留给我POST和PATCH,这对我来说都不合适。或许还有另一种方法可以提供被认为是正确方法的整体行为。

    我真的很想知道什么是最佳做法并了解原因。

    干杯

    第一个回复的原始帖子:

    我有一个给定项目的池,它将使用RESTful API进行管理。现在向池中添加项目不是问题,但如何从池中获取项目?它也是POST还是DELETE? 让我们说它是一个随机数池,我想在一个方法调用中检索可变数量的项目。 我有两种情况:

    1. 我没有把它们检查出来,因为它们不会被送回游泳池。
    2. 我只想查看它们,它们实际上仍然是游泳池的一部分,但状态已改为'inUse'
    3. 在每种情况下重要的是我不关心我得到哪些项目,我只想要N个。

      什么被认为是执行池中两个操作的RESTful方式?我对第二个选项有一个看法,但我对前者感到犹豫,所以我对你的想法感兴趣,所以我更好地理解思维模式

      由于

1 个答案:

答案 0 :(得分:0)

不确定我是否理解你的问题。它主要取决于您开发REST通信的API端的方式。

在通用解决方案中,您可以使用DELETE从列表中取出项目。但是,如果您只想PARTIALY更新项目,则可以使用PATCH而不是POST或PUT。

看看:http://restcookbook.com/HTTP%20Methods/patch/