(POST) rest API 的请求体中的 Array vs hashmap

Array vs hashmap in the request body of a (POST) rest API

我正在构建一个涉及前端(javascript 基于浏览器的客户端)和后端(基于 Java 的服务)的应用程序。

对于将从浏览器调用到后端服务(在前端填写表单时)的其​​中一个 API(POST 方法),我计划传递请求正文(JSON) 如下

{
    data: [
        {
            "fieldId": "123sda121231",
            "fieldValue": "some_user_input_for_field_1",
        },
        {
            "fieldId": "223sda121231",
            "fieldValue": "some_user_input_for_field_2",
        },
        {
            "fieldId": "323sda121231",
            "fieldValue": "some_user_input_for_field_3",
        }
    ]
}

但是,现在我很困惑,我想知道我是否应该按以下方式进行。

{
    data: {
        "123sda121231": "some_user_input_for_field_1",
        "223sda121231": "some_user_input_for_field_2",
        "323sda121231": "some_user_input_for_field_3"
    }
}

有人可以帮助我了解哪种方法可能是构建此请求正文的更好方法吗?

P.S。 FieldIds 是在后端预定义的。

通常,在设计问题中,没有单一的正确答案,一个解决方案可能对一个问题有利,也可能对另一个问题不利。

我更喜欢创建对象数组的方法(我们将我们的 class 称为 FieldData)。在上面的例子中,FieldData class 是:

public class FieldData{
   String fieldId;
   String fieldValue;
}

我看到的这种方法的好处:

  1. 响应非常灵活,以后我们可以在不破坏API约定的情况下轻松地在FieldData对象中增加一个字段。
  2. 发送的响应更容易让客户端理解,客户端会知道fieldId包含字段的id,fieldValue包含它的值。而在地图的情况下,此逻辑并未明确可用。

同样在您的情况下,如果在场景 1 中,field1 值以某种方式为 2 个或更多 null,那么它可能会覆盖其他值。 也适用于您具有相同键但具有不同值的场景。这可能会产生不必要的错误。 OOPS 建议数据封装,因此在 JAVA 中创建一个 class 来单独处理请求是一种很好的做法,并且可以更好地测试。 正如@Deepak 已经指出的那样,也是可扩展的。