Я реализовал конечную точку обновления для пользователя.
Я хотел бы знать, как вернуть статус 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, который напрямую предоставляет ресурсы, но это не тот ответ, который я ищу (не соответствует моим потребностям, так как мне действительно нужны уровни сервиса и репозитория)
Используйте ResponseEntity<T>
, чтобы указать статус.
@PutMapping
public ResponseEntity<UserDTO> update(@RequestBody User user) {
User updated = userService.update(user);
return ResponseEntity.status(HttpStatus.OK).body(updated);
}
Подробнее об этом подходе в этом статья о Баелдунге.