更新父级时级联更新子级

时间:2017-10-04 20:00:16

标签: java rest

我正致力于创建Web应用程序。 在项目中,我有3个实体:

  • 套装
  • 案例
  • 步骤

一个套装包含许多案例,一个案例包含许多步骤。所有信息仅代表一个网页。因此,在网页上,我们有关于一个套装的信息,包含在此套装中的案例列表,以及每个案例的所有步骤 在网页上我们还有一个按钮,用于保存有关Suit的所有信息。因此,客户可以改变他想要的一切。他可以删除和插入步骤或案例,但点击“保存”按钮后将保存所有更改。

所以我的问题是:“如何正确编写查询以更新所有信息?”

小例子:我们得到类似这样的后端:

{
    "id": 1,
    "name": "Suit name",
    "cases":[
        {
            "id": 1,
            "name": "Case 1",
            "steps":[
                {
                    "id": 1,
                    "name": "Case 1 first step"
                } 
            ]
        },
        {
            "id": 2, 
            "name": "Case 2",
            "steps":[
                {
                    "id": 2,
                    "name": "Case 2 first step"
                },
                {
                    "id": 3,
                    "name": "Case 2 second step"
                } 
            ]
        }
    ]
}

当客户更新套装信息时,例如他可以在“案例1”中添加新步骤,并删除“案例2”。在这种情况下,我创建了一个新的JSON对象:

{
    "id": 1,
    "name": "New suit name",
    "cases":[
        {
            "id": 1,
            "name": "Case 1",
            "steps":[
                {
                    "id": 1,
                    "name": "Case 1 first step"
                },
                {
                    "name": "Case 1 second step"
                } 
            ]
        }
    ]
}

当我得到这个JSON对象时,很难检测到更改的内容(更新,删除或添加),因此我删除了有关套装的所有信息并再次插入。

此JSON对象发送的另一个问题:

PUT http://example.com/suit/1

如果我正确指定了JSON-object,我可以使用REST API来添加,更新和删除所有的元素。

但我认为这是错误的方式。 REST API PUT必须只更新有关元素的信息,或者添加元素(如果它们不存在),但不能删除。

可能是遇到类似问题的人。我很乐意听取您的意见和建议。

此致

1 个答案:

答案 0 :(得分:0)

在restfull API中,我建议通过API查询对象是否存在并进行相应调用,例如,如果存在调用update,如果不调用create。

您不必在服务器端处理所有这些混乱