Wenn beim Aktualisieren einer Ressource über REST nur die zu aktualisierenden Werte oder das gesamte Objekt (aktuelle Werte und zu aktualisierende Werte) in den body aufgenommen werden sollen?Aktualisieren einer Ressource durch REST (PUT/POST)
Wenn ein User-Objekt wie dieses
User (id, name, age, sex)
aussieht und ich möchte nur seinen Namen und das Alter aktualisieren, sollten meine Anfrage wie folgt aussehen:
PUT /users/1
{"name":"john","age":18}
oder so:
PUT /users/1
{"name":"john","age":18, "sex":"m"}
Und wie sollte das auf dem Server aussehen Idee?
@RequestMapping(value = "/{userId}", method = PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> updateUser(@PathVariable final int userId, @RequestBody User u){
//fetch user by ID
user.setName(u.getName())
user.setAge(u.getAge())
user.setSex(u.getSex()) //this will be empty?
return new ResponseEntity<String>(gson.toJson(user), HttpStatus.OK);
}
Oder alternativ könnte ich herausfinden, welche Variablen wurden nicht in der Anfrage Körper aufgenommen und tun so etwas wie dieses
if(u.getName()!=null){
user.setName(u.getName())
}
if(u.getAge()!=null){
user.setAge(u.getAge())
}
if(u.getSex()!=null){
user.setSex(u.getSex())
}
Gibt es eine richtig/falsch Weg, dies zu erreichen, oder ist es ein Fall nur tun, was am einfachsten ist?