Lors de la mise à jour d'une ressource via REST, faut-il inclure dans le corps uniquement les valeurs à mettre à jour ou l'objet entier (valeurs actuelles et valeurs à mettre à jour)?Mise à jour d'une ressource via REST (PUT/POST)
Si un objet utilisateur ressemble à ceci
User (id, name, age, sex)
et je veux mettre à jour que son nom et son âge, si ma demande ressembler à ceci:
PUT /users/1
{"name":"john","age":18}
ou comme ceci:
PUT /users/1
{"name":"john","age":18, "sex":"m"}
Et à quoi cela devrait-il ressembler sur le serveur s ide?
@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);
}
Ou bien je pourrais trouver sur les variables ne sont pas incluses dans le corps de la demande et de faire quelque chose comme ça
if(u.getName()!=null){
user.setName(u.getName())
}
if(u.getAge()!=null){
user.setAge(u.getAge())
}
if(u.getSex()!=null){
user.setSex(u.getSex())
}
Est-il possible de bien/mal pour y parvenir, ou est-ce un cas de faire juste ce qui est le plus facile?