ruby-on-rails - 我需要一个 RESTful 实现 RPG 游戏库存 API 的想法

标签 ruby-on-rails api rest crud

我正在开发一种 RPG 游戏。我想弄清楚
一种定义库存 API 的漂亮、干净和 RESTful 方式。

库存包括几个slots喜欢 head , chest等等(就像在大多数 RPG 游戏中一样)。

现在我需要定义 REST API 以将所有项目从插槽 X 移动到插槽 Y。

我有几个想法:

  • 好吧,显然库存位于 /inventory
  • 所以第一个想法是像 /inventory/movement 一样并拥有一个 CREATE就可以做到CRUD .所以它会是 POST /inventory/movement .这将是 CRUD 和 REST,但感觉非常糟糕。
  • 另一个是在库存上添加一些魔法属性并对其进行更新:PUT /inventory?move_from=A&move_to=B .这感觉还是不太好。

  • 所以.. 对此有一个干净的 CRUD REST 解决方案吗?

    更新:刚刚有另一个:PUT /inventory/:to_slot?from=:from_slot - 还不确定。当涉及 2 个时,为什么只在一个插槽上执行操作?嗯……呃!

    最佳答案

    由于在 REST 中,您应该始终对资源或资源集合进行操作,因此在这种情况下,我会考虑“”。搬家 ' 操作作为 REST 资源。起初这可能看起来不正确,因为我们考虑了 ' 搬家 ' 是动词而不是名词,但是如果界面包含高级别的抽象,这可能是有意义的。在向用户公开可用于控制游戏的选项的高级界面中,您可能希望对“”采取行动。移动选项 ',突然变成了名词!

    因此,我将使用 POST 动词来移动库存中的项目,因为我们将发出创建新的“”的请求。搬家 ' 行动。考虑以下不言自明的例子:

    - POST /move/inventory/a/b
    - POST /sell/inventory/a
    - POST /use/inventory/b
    

    ' 搬家 ' 原始 CRUD 操作中的命令通常使用 CREATE 后跟 DELETE 来实现。但是,我认为如果您要在这样的游戏资源上使用原始 CRUD 操作,您会发现它太低级了。

    如果您要从 x 获取一个项目并将其放入 y,您会将检查 y 是否为有效目的地的验证逻辑放在哪里?它应该在模型中(在界面后面)还是在你的游戏中?如果它应该在模型中,那么我认为您应该考虑我之前描述的高级方法。另一方面,如果您打算在游戏中(在界面前)处理此逻辑,那么您可以采用原始 CRUD 方法,如 Jan suggested in another answer .

    请注意,如果您的 RPG 将面向 Web,则您必须在服务器端处理游戏逻辑。在这种情况下,我会寻求将 REST 界面与提示给用户的控件和选项一一对应——同样,我会建议上面提出的高级模型。

    关于ruby-on-rails - 我需要一个 RESTful 实现 RPG 游戏库存 API 的想法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2316803/

    相关文章:

    ruby-on-rails - 如何在 Ruby on Rails 中重新创建 Schema.rb(删除后)?

    ruby-on-rails - 谁能告诉我 Rails 中这两种变量赋值方法的区别?

    css - 如何将类添加到 Rails View 中的表单元素?

    ios - 没有用户帐户的 iOS 安全 API

    Java HttpURLConnection 状态码 302

    c# - 如何在 C# 中使用 WebRequest 和 HttpWebResponse 导航到身份验证 URL 并登录网站?

    ruby-on-rails - 避免 delayed_job 队列中的重复作业

    java - 使用 Java 获取 YouTube channel 订阅

    api - 如何在 TinyMCE 中使用外部调用格式化选定的文本?

    java - 微服务通信