基于HTTP状态码实现业务增删改查的RESTful API示例
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserRepository userRepository;
// 创建用户
@PostMapping
public ResponseEntity<User> createUser(@RequestBody User user) {
User savedUser = userRepository.save(user);
return new ResponseEntity<>(savedUser, HttpStatus.CREATED);
}
// 查询
@GetMapping("/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
User user = userRepository.findUserById(id);
if (user != null) {
return new ResponseEntity<>(user, HttpStatus.OK);
} else {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
}
//复杂查询
@PostMapping("/page")
public ResponseEntity<Page<User>> searchUsers(@RequestBody UserSearchCriteria criteria, Pageable pageable) {
Page<User> users = userRepository.criteriaSearch(criteria, pageable);
return ResponseEntity.ok(users);
}
// 更新
@PutMapping("/{id}")
public ResponseEntity<User> updateUser(@PathVariable Long id, @RequestBody User user) {
User existingUser = userRepository.findUserById(id);
if (existingUser != null) {
BeanUtils.copyProperties(user, existingUser);
userRepository.save(existingUser);
return new ResponseEntity<>(existingUser, HttpStatus.OK);
} else {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
}
// 删除
@DeleteMapping("/{id}")
public ResponseEntity deleteUser(@PathVariable Long id) {
userRepository.deleteById(id);
return new ResponseEntity(HttpStatus.NO_CONTENT);
}
}
网友评论