Spring data + Spring Boot: возвращает 200, если ресурс был обновлен или 201, если ресурс был создан

Я реализовал конечную точку обновления для пользователя.

Я хотел бы знать, как вернуть статус 201 при создании пользователя и 200, если пользователь был только что обновлен с использованием функций среды Spring в максимально возможной степени (а не пользовательских вещей).

У меня есть этот UserController:

@RequestMapping("users")
@RestController
public class UserController {

  @Autowired
  private UserService userService;

  ...

  @PutMapping
  public UserDTO update(@RequestBody User user) {
    User updated = userService.update(user);
    return updated;
  }
}

Этот пользовательский сервис:

@Service
public class UserService {
  @Autowired
  UserRepository userRepository;

  ...

  public User update(User user) {
    return userRepository.save(user);
  }
}

И этот UserRepository:

@Repository
public interface UserRepository extends MongoRepository<User, String> {
}

Я знаю, что существует Spring Data Rest, который напрямую предоставляет ресурсы, но это не тот ответ, который я ищу (не соответствует моим потребностям, так как мне действительно нужны уровни сервиса и репозитория)

0
0
20
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте ResponseEntity<T>, чтобы указать статус.

@PutMapping
  public ResponseEntity<UserDTO> update(@RequestBody User user) {
    User updated = userService.update(user);
    return ResponseEntity.status(HttpStatus.OK).body(updated);
  }

Подробнее об этом подходе в этом статья о Баелдунге.

Другие вопросы по теме