在后端开发中,RESTful API是构建服务的常用方式,而Spring Boot凭借其“约定优于配置”的特性,能快速实现接口开发。本文将带大家从零开始,用Spring Boot搭建一个简单的用户管理RESTful API,包含基本的CRUD操作,并集成Swagger用于接口文档生成。

一、环境准备

在开始前,确保本地已安装以下工具:

    •    JDK 1.8+(推荐JDK 11)

    •    Maven 3.6+(或Gradle)

    •    IDE(IntelliJ IDEA或Eclipse,本文以IDEA为例)

    •    MySQL 5.7+(用于数据存储)

二、初始化Spring Boot项目

    1.    通过Spring Initializr创建项目
访问 Spring Initializr,填写项目信息:

    ◦    Project:Maven

    ◦    Language:Java

    ◦    Spring Boot:2.7.0(稳定版)

    ◦    Group:com.example

    ◦    Artifact:user-api

    ◦    Dependencies:勾选 Spring Web、Spring Data JPA、MySQL Driver、Springdoc OpenAPI UI(用于Swagger文档)。

    2.    导入项目到IDE
下载项目后,用IDEA打开pom.xml,等待Maven依赖下载完成。

三、配置数据库连接

在src/main/resources/application.yml中配置MySQL连接信息:
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/user_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: update  # 自动创建表结构(开发环境用)
    show-sql: true      # 打印SQL语句
    properties:
      hibernate:
        format_sql: true  # 格式化SQL
注意:需提前在MySQL中创建数据库user_db(CREATE DATABASE user_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;)。

四、实现核心功能(CRUD)

1. 定义实体类(Entity)

创建com.example.userapi.entity.User类,映射数据库表:
package com.example.userapi.entity;

import javax.persistence.*;
import lombok.Data;

@Data
@Entity
@Table(name = "t_user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(nullable = false, length = 50)
    private String username;
    
    @Column(nullable = false, length = 100)
    private String email;
    
    @Column(name = "create_time")
    private LocalDateTime createTime;
}
说明:

    •    @Data(Lombok注解)自动生成getter、setter等方法,需在pom.xml中添加Lombok依赖。

    •    @Entity声明为JPA实体,@Table指定数据库表名。

    •    @GeneratedValue设置主键自增策略。

2. 定义数据访问层(Repository)

创建com.example.userapi.repository.UserRepository接口,继承JpaRepository:
package com.example.userapi.repository;

import com.example.userapi.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
    // JPA自动实现基本CRUD,如需自定义查询,可添加方法(如根据用户名查询)
    User findByUsername(String username);
}
3. 定义服务层(Service)

创建com.example.userapi.service.UserService接口及实现类:
// 接口
package com.example.userapi.service;

import com.example.userapi.entity.User;
import java.util.List;

public interface UserService {
    User save(User user);          // 新增/修改用户
    User getById(Long id);         // 根据ID查询
    List<User> getAll();           // 查询所有
    void deleteById(Long id);      // 根据ID删除
}

// 实现类
package com.example.userapi.service.impl;

import com.example.userapi.entity.User;
import com.example.userapi.repository.UserRepository;
import com.example.userapi.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserRepository userRepository;

    @Override
    public User save(User user) {
        if (user.getId() == null) {
            user.setCreateTime(LocalDateTime.now()); // 新增时设置创建时间
        }
        return userRepository.save(user);
    }

    @Override
    public User getById(Long id) {
        return userRepository.findById(id)
                .orElseThrow(() -> new RuntimeException("用户不存在"));
    }

    @Override
    public List<User> getAll() {
        return userRepository.findAll();
    }

    @Override
    public void deleteById(Long id) {
        userRepository.deleteById(id);
    }
}
4. 定义控制器(Controller)

创建com.example.userapi.controller.UserController,实现RESTful接口:
package com.example.userapi.controller;

import com.example.userapi.entity.User;
import com.example.userapi.service.UserService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/users")
@Tag(name = "用户管理接口", description = "提供用户的CRUD操作")
public class UserController {

    @Autowired
    private UserService userService;

    @PostMapping
    @Operation(summary = "新增用户")
    public ResponseEntity<User> save(@RequestBody User user) {
        return ResponseEntity.ok(userService.save(user));
    }

    @GetMapping("/{id}")
    @Operation(summary = "根据ID查询用户")
    public ResponseEntity<User> getById(@PathVariable Long id) {
        return ResponseEntity.ok(userService.getById(id));
    }

    @GetMapping
    @Operation(summary = "查询所有用户")
    public ResponseEntity<List<User>> getAll() {
        return ResponseEntity.ok(userService.getAll());
    }

    @DeleteMapping("/{id}")
    @Operation(summary = "根据ID删除用户")
    public ResponseEntity<Void> deleteById(@PathVariable Long id) {
        userService.deleteById(id);
        return ResponseEntity.noContent().build();
    }
}
五、集成Swagger接口文档

Springdoc OpenAPI会自动生成接口文档,无需额外配置。启动项目后,访问:
http://localhost:8080/swagger-ui.html
即可看到可视化的接口文档,支持在线调试(如发送POST请求新增用户)。

六、测试接口

可通过以下方式测试接口:

    1.    Swagger页面:在页面中选择接口,填写参数后点击“Execute”。

    2.    Postman:发送HTTP请求(如POST http://localhost:8080/api/users,请求体为JSON:{"username":"test","email":"test@example.com"})。

    3.    curl命令:
# 新增用户
curl -X POST -H "Content-Type: application/json" -d '{"username":"张三","email":"zhangsan@example.com"}' http://localhost:8080/api/users
# 查询所有用户
curl http://localhost:8080/api/users
七、总结

本文通过Spring Boot快速搭建了一个用户管理RESTful API,包含以下关键点:

    •    用Spring Initializr初始化项目,集成Web、JPA、MySQL等依赖;

    •    基于JPA实现数据持久化,简化CRUD代码;

    •    用Swagger自动生成接口文档,方便调试和对接;

    •    遵循RESTful规范设计接口(POST新增、GET查询、DELETE删除等)。

后续可扩展功能:添加请求参数校验、统一异常处理、分页查询等。如果有疑问,欢迎在评论区交流!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐