gpt4 book ai didi

jquery - 使用 REST 发布对象数组的规范技术

转载 作者:行者123 更新时间:2023-12-02 14:36:53 28 4
gpt4 key购买 nike

感谢您抽出时间来阅读。我查看了 Stack Overflow 并没有看到类似的问题,但如果我错过了一个问题,我深表歉意。

所以我正在构建一个 RESTful API,以及一个用户界面,它是所述 REST API 的(第一个)消费者。

我需要创建一个对象。该对象的创建需要大量的配置。

我了解我需要使用的动词(POST - 我们不要争论这一点)和我需要拥有的 URL 路径。我的问题是关于如何配置参数。让我给你一个 JSON 格式的示例配置对象,以便不可知:

    { 
name: "foo",
barid:1,
features:[
{
id:1,
config: {
foo:bar,
fubar:baz
}
},
{
id:2,
config: {
foo:bar,
fubar:baz
}
},...
]
}

所以我想知道的是……发布 features 参数的正确方法是什么?我是否应该将“功能”设为 JSON 字符串并在服务器端对其进行反序列化?您是否遵循一些约定在 RESTful POST 中构建嵌套对象数组?其他开发人员将不得不使用它,我当然不希望人们必须手动构建 jQuery 对我的 JSON 对象所做的事情,它看起来像:
features[0][featureid]:2
features[0][configuration][min]:-64
features[0][configuration][max]:50
features[0][include]:true
features[1][featureid]:3
features[1][configuration][min]:0
features[1][configuration][max]:80.5
features[1][include]:true

我的 grails 应用程序不太喜欢这样 :)

感谢你的宝贵时间。

最佳答案

Grails 可以接受像 features[0].featured=2&features[0].configuration.min=-64 这样的参数。 ,但您必须在实际映射之前准备空结构和特征数组。这将是:

import org.apache.commons.collections.ListUtils
import org.apache.commons.collections.Factory

class DataCommand {

String name

List features = = ListUtils.lazyList([], {
new FeatureCommand(
configuration: new ConfigurationCommand()
)
} as Factory)

}

+
class FeatureCommand {
int featured
ConfigurationCommand configuration
}

class ConfigurationCommand {
int min
int max
}
lazyList按需创建列表元素。如果您确切知道功能的数量 - 您可以使用lazyList手动填充它。

顺便说一句,这也是将正文中的实际 JSON POST/PUT 到服务器而不是请求参数的好方法。例如,它是 BackboneJS 的默认方式。因此,您将能够自己解析传入的 JSON,映射到相同的命令(需要很少的配置)。

关于jquery - 使用 REST 发布对象数组的规范技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9119808/

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