2017-10-04 58 views
0

我正在创建Web应用程序。 在项目中,我有3个实体:更新父级时级联更新孩子

  • 西装
  • 案例
  • 步骤

一套西装包含了许多案例和一个案例包含许多步骤。所有信息仅代表一个网页。因此,在网页上我们有关于一件西装的信息,包含在本套件中的案例清单以及每个案件的所有步骤。
在网页上,我们还有一个按钮用于保存有关西装的所有信息。所以,顾客可以改变他想要的一切。他可以删除并插入步骤或案例,但是当他点击“保存”按钮时,所有更改都会保存。

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

小例子:我们得到在后端是这样的:

{ 
    "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 

我可以用它休息添加,更新API和删除所有元素在诉讼中,我指定正确的JSON对象。

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

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

问候

回答

0

在问题的REST API,我建议通过API来查询对象存在,并相应地调用,例如是否存在调用更新,如果不调用创建。

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