Si cela est possible dans votre cas d'utilisation, vous pouvez utiliser PUT au lieu de POST, car PUT devrait fonctionner comme prévu.
Solution avec POST
Vous pouvez obtenir le comportement souhaité avec Spring Data REST Event handlers.
Créez simplement une méthode Handler qui accepte votre entité et l'annotez avec @HandleBeforeCreate
. Dans cette méthode, vous pouvez implémenter votre comportement, c'est-à-dire vérifier si l'objet existe et le mettre à jour manuellement ou simplement ne rien faire et laisser le Spring Data REST gérer la création de l'entité.
@RepositoryEventHandler
public class EntityEventHandler {
@Autowired
private EntityService entityService;
@HandleBeforeCreate
public void handleEntityCreate(Entity e) {
if (entityService.exists(e)) {
entityService.update(e);
}
}
}
EDIT: Je viens de réaliser que vous devez également arrêter le créer un événement après votre mise à jour. Vous pouvez essayer de lancer une exception personnalisée et de la gérer pour renvoyer 200 et l'entité mise à jour.