我正在为嵌入式硬件设备开发一个RESTful HTTP。在这个API中,硬件组件通常用API参考资料的URI层次结构来表示,后者有带有特定于该硬件“对象”的属性/字段的子JSON对象。为了控制/修改硬件,会发送一个HTTP请求,其中包含一个包含要更改的字段的JSON对象的内容体。
我的问题是关于JSON请求体中字段的顺序。假设我们在同一个JSON对象中更改多个字段。由于JSON对象是按定义,它是“零或多个名称/值对的无序集合”,这意味着应用这些硬件更改的顺序也是无序/未定义的,这可能不是很好。
例如,如果必须在设置"setting1“之前配置”状态“,怎么办?例如,可以将以下内容作为内容正文发送:
{
"setting1": 1234,
"state": "on",
}但是,如果我们发送以下内容,会发生什么呢?(请注意,"state“字段首先出现。)
{
"state": "on",
"setting1": 1234,
}问题是,在默认情况下,JSON对象的上下文是“无序的”,因此行为是不确定的。
如果可以(也许通过API文档)确定请求中JSON字段的顺序是重要的,这会被认为违反了JSON和RESTful API上下文中的最佳实践吗?其他人是如何处理这件事的?如果没有讨论这个问题,我会感到惊讶,但我却没有找到任何东西。
发布于 2015-07-24 14:26:48
我不确定,但我认为,试图对客户施加订单限制对其中一些人来说是有问题的。我敢打赌,并不是所有的框架/JSON库都会尊重顺序,至少在默认情况下不会。如果你控制了客户,这可能不是什么大事,但听起来你不是。
严格地说,您必须发送多个PUT请求,以确保更新按正确的顺序进行。这是最容易实现的,但也是最吵的。另一种选择是使用RFC 6902格式支持对端点的修补程序调用。这将允许您控制发生更改的顺序,但您的客户端需要构建PATCHes。你也可以支持一个职位,如果这两个都没有对你有吸引力。
https://stackoverflow.com/questions/31600594
复制相似问题