gpt4 book ai didi

json - 您如何在 REST 中对复杂操作进行建模?

转载 作者:行者123 更新时间:2023-12-04 18:08:21 26 4
gpt4 key购买 nike

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

下面是一些棘手的例子:

GET/characters/bob/items
这将返回 Bob 携带的一组元素。

我需要对这些项目执行各种“操作”,我很难将其建模为“资源”。

以下是一些可能的操作,具体取决于项目的性质:
扔、吃、掉、抱

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

目前,我有一个“操作”资源,我可以将这些任意操作发布到其中。但这感觉太 RPC 和非标准化/可发现:

POST/ Action / throw
{
字符 ID:5,
项目编号:10,
x: 100,
y:150
}

最佳答案

我尝试尽可能坚持使用资源和 GET/POST/PUT/PATCH/DELETE,但基本动词往往直接映射到 CRUD 调用。如果没有附加信息,通常无法映射其他更复杂的操作。

专注于资源,我可能会做这样的事情(向资源发布消息):

POST /characters/bob/items/{bombId}?action=throw
POST /characters/bob/items/{foodId}?action=eat
POST /characters/bob/items/{potionId}?action=add&addedItem={ingredientId}

当操作不适合项目时返回错误。

关于json - 您如何在 REST 中对复杂操作进行建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21200485/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com