小编use*_*823的帖子

您如何模拟REST中的复杂操作?

我正在开发一个在线游戏,角色可以对其他对象和角色执行复杂的动作.我正在构建一个REST API,并且在尝试遵循一些最基本的标准时遇到很多麻烦.我知道REST并不总是答案,但由于各种原因,我使用REST是有道理的,因为API的其余部分恰当地使用了它.

以下是一些棘手的例子:

GET/characters/bob/items这将返回Bob携带的项目数组.

我需要针对这些项目执行各种"操作",并且我很难将其建模为"资源".

以下是一些潜在的操作,具体取决于项目的性质:扔,吃,掉,保持

这很复杂,因为这些"操作"仅适用于某些项目.例如,你不能吃剑.此外,'eat'基本上具有"删除"资源的副作用.使用'throw'也可以'删除'资源.使用'drop'可以将资源"转换"为另一种资源类型.'投掷'要求我提供'位置'."保持"要求我提供哪一只手来容纳物品.那么如何将这些操作建模为资源?它们都不是"相似的",因为它们各自需要不同的参数并导致完全不同的行为.

目前,我有一个'actions'资源,我将这些任意操作发布到.但这感觉太过RPC和非标准/可发现:

POST/actions/throw {characterId:5,itemId:10,x:100,y:150}

architecture api rest json hateoas

5
推荐指数
1
解决办法
1862
查看次数

标签 统计

api ×1

architecture ×1

hateoas ×1

json ×1

rest ×1