部分对象更新

Partly object update

如何部分更新对象?

例如创建对象"project":

curl -X POST -H "Content-Type:application/json" -d '
{ "name":"Project 1", "number": 123 }
' localhost:8080/myapp/projects
{
  "id" : 79,
  "number" : "123",
  "name" : "Project 1",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/myapp/projects/79"
    },
    "project" : {
      "href" : "http://localhost:8080/myapp/projects/79"
    }
  }
}

并更新此项目:

curl -i -X PUT -H "Content-Type:application/json" -d '
{ "number": 124 }
' localhost:8080/myapp/projects/79
{
  "id" : 79,
  "number" : "124",
  "name" : null,
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/myapp/projects/79"
    },
    "project" : {
      "href" : "http://localhost:8080/myapp/projects/79"
    }
  }
}

属性 "name" 现在为空。 如果 属性 未在更新请求中设置,如何设置旧值对象 属性?

我正在为 ProjectRepository 使用 @RepositoryRestResource 注释来指示 Spring MVC 在 /projects

创建 RESTful 端点

解决方法:使用PATCH http方式。

curl -i -X PATCH -H "Content-Type:application/json" -d '
{ "number": 124 }                    
' localhost:8080/myapp/projects/79
{
  "id" : 79,
  "number" : "124",
  "name" : "Project 1",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/myapp/projects/79"
    },
    "project" : {
      "href" : "http://localhost:8080/myapp/projects/79"
    }
  }
}