在IntelliJ IDEA中开发RESTful API前,需完成以下基础配置:
application.properties/application.yml,例如数据库连接(若使用JPA)、服务器端口等。遵循REST架构风格,确保API的一致性与可扩展性:
/api/users表示用户集合,/api/users/1表示ID为1的用户);GET:获取资源(如/api/users获取所有用户);POST:创建资源(如/api/users提交用户数据);PUT:更新资源(如/api/users/1修改ID为1的用户);DELETE:删除资源(如/api/users/1删除ID为1的用户);200 OK:成功获取资源;201 Created:成功创建资源;400 Bad Request:请求参数错误;404 Not Found:资源不存在;500 Internal Server Error:服务器内部错误。使用@RestController注解标记类,@RequestMapping定义基础路径,通过@GetMapping、@PostMapping等方法注解处理具体请求:
@RestController
@RequestMapping("/api/users") // 基础路径
public class UserController {
@Autowired
private UserService userService; // 业务逻辑层
// 获取所有用户
@GetMapping
public ResponseEntity<List<User>> getAllUsers() {
return ResponseEntity.ok(userService.findAll());
}
// 创建用户
@PostMapping
public ResponseEntity<User> createUser(@RequestBody User user) {
return ResponseEntity.status(HttpStatus.CREATED).body(userService.save(user));
}
}
IntelliJ IDEA会自动提示注解的正确用法,并支持快速生成方法骨架。
使用JPA注解(如@Entity、@Table、@Id)定义实体类,映射数据库表:
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// Getters and Setters(IntelliJ IDEA可自动生成)
}
若无需数据库,可使用POJO(Plain Old Java Object)替代。
创建@Service类,封装核心业务逻辑(如数据校验、数据库操作):
@Service
public class UserService {
@Autowired
private UserRepository userRepository; // 数据访问层
public List<User> findAll() {
return userRepository.findAll();
}
public User save(User user) {
if (user.getName() == null || user.getName().isEmpty()) {
throw new IllegalArgumentException("Name cannot be empty");
}
return userRepository.save(user);
}
}
IntelliJ IDEA可快速生成Service接口与实现类。
使用Spring Data JPA的JpaRepository接口,简化数据库操作:
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
// 自动提供findAll、save、findById等方法
}
IntelliJ IDEA会提示Repository接口的继承关系,并支持自动生成查询方法。
创建ResponseWrapper类,封装响应数据、状态码与消息,确保所有API返回结构一致:
public class ResponseWrapper<T> {
private int status;
private String message;
private T data;
// 构造方法、Getters and Setters
}
// 在Controller中使用
@GetMapping
public ResponseEntity<ResponseWrapper<List<User>>> getAllUsers() {
List<User> users = userService.findAll();
return ResponseEntity.ok(new ResponseWrapper<>(200, "Success", users));
}
IntelliJ IDEA可快速生成Getter/Setter与构造方法。
使用@ControllerAdvice与@ExceptionHandler实现全局异常处理,避免重复代码:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(ResourceNotFoundException.class)
public ResponseEntity<ResponseWrapper<Void>> handleResourceNotFound(ResourceNotFoundException ex) {
return ResponseEntity.status(HttpStatus.NOT_FOUND)
.body(new ResponseWrapper<>(404, ex.getMessage(), null));
}
@ExceptionHandler(IllegalArgumentException.class)
public ResponseEntity<ResponseWrapper<Void>> handleIllegalArgument(IllegalArgumentException ex) {
return ResponseEntity.badRequest()
.body(new ResponseWrapper<>(400, ex.getMessage(), null));
}
}
IntelliJ IDEA可快速生成异常类与处理方法。
使用javax.validation注解(如@NotNull、@Size)校验请求参数,结合@Valid触发校验:
@PostMapping
public ResponseEntity<User> createUser(@Valid @RequestBody User user) {
return ResponseEntity.status(HttpStatus.CREATED).body(userService.save(user));
}
IntelliJ IDEA会在编辑器中提示验证注解的使用,并支持快速修复。
在URI中添加版本号(如/api/v1/users),便于后续API升级:
@RestController
@RequestMapping("/api/v1/users") // 版本号v1
public class UserControllerV1 {
// 方法实现
}
@RestController
@RequestMapping("/api/v2/users") // 版本号v2
public class UserControllerV2 {
// 新版本方法实现
}
IntelliJ IDEA支持通过@RequestMapping快速切换版本路径。
http://localhost:8080/api/users),选择HTTP方法(GET/POST等);Content-Type: application/json),填写请求体(如{"name": "John", "email": "john@example.com"});http-requests.http文件;GET http://localhost:8080/api/users
Accept: application/json
Pageable)与异步处理(@Async);springfox-boot-starter)自动生成API文档,方便前后端协作;@CrossOrigin注解或配置CorsFilter,允许前端跨域访问。免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。