如何用Spring Boot写第一个RESTful接口?

wen java案例 71

本文目录导读:

如何用Spring Boot写第一个RESTful接口?

  1. 项目初始化
  2. 创建主应用类
  3. 创建实体类(可选)
  4. 创建 REST 控制器
  5. 配置 application.properties
  6. 测试接口
  7. 常用注解说明
  8. 项目结构

我来详细介绍如何用Spring Boot创建第一个RESTful接口。

项目初始化

使用 Spring Initializr(推荐)

访问 https://start.spring.io/,配置:

  • Project: Maven
  • Language: Java
  • Spring Boot: 3.x.x
  • Dependencies: Spring Web

手动创建 Maven 项目

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.0</version>
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>1.0.0</version>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

创建主应用类

DemoApplication.java

package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

创建实体类(可选)

User.java

package com.example.demo.model;
public class User {
    private Long id;
    private String name;
    private String email;
    public User() {}
    public User(Long id, String name, String email) {
        this.id = id;
        this.name = name;
        this.email = email;
    }
    // Getter 和 Setter 方法
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public String getEmail() { return email; }
    public void setEmail(String email) { this.email = email; }
}

创建 REST 控制器

HelloController.java - 简单示例

package com.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, Spring Boot!";
    }
}

UserController.java - 完整示例

package com.example.demo.controller;
import com.example.demo.model.User;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@RestController
@RequestMapping("/api/users")
public class UserController {
    // 模拟数据库
    private List<User> users = new ArrayList<>();
    // POST - 创建用户
    @PostMapping
    public ResponseEntity<User> createUser(@RequestBody User user) {
        user.setId((long) (users.size() + 1));
        users.add(user);
        return new ResponseEntity<>(user, HttpStatus.CREATED);
    }
    // GET - 获取所有用户
    @GetMapping
    public ResponseEntity<List<User>> getAllUsers() {
        return new ResponseEntity<>(users, HttpStatus.OK);
    }
    // GET - 根据ID获取用户
    @GetMapping("/{id}")
    public ResponseEntity<User> getUserById(@PathVariable Long id) {
        Optional<User> user = users.stream()
                .filter(u -> u.getId().equals(id))
                .findFirst();
        return user.map(ResponseEntity::ok)
                .orElseGet(() -> ResponseEntity.notFound().build());
    }
    // PUT - 更新用户
    @PutMapping("/{id}")
    public ResponseEntity<User> updateUser(@PathVariable Long id, @RequestBody User userDetails) {
        Optional<User> userOptional = users.stream()
                .filter(u -> u.getId().equals(id))
                .findFirst();
        if (userOptional.isPresent()) {
            User user = userOptional.get();
            user.setName(userDetails.getName());
            user.setEmail(userDetails.getEmail());
            return ResponseEntity.ok(user);
        } else {
            return ResponseEntity.notFound().build();
        }
    }
    // DELETE - 删除用户
    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
        boolean removed = users.removeIf(u -> u.getId().equals(id));
        if (removed) {
            return ResponseEntity.noContent().build();
        } else {
            return ResponseEntity.notFound().build();
        }
    }
}

配置 application.properties

src/main/resources/application.properties

# 服务器端口
server.port=8080
# 应用名称
spring.application.name=demo
# 日志级别
logging.level.com.example.demo=DEBUG

测试接口

启动应用

运行 DemoApplication.java 的 main 方法

使用 curl 测试

# 1. GET - 测试 hello 接口
curl http://localhost:8080/hello
# 2. POST - 创建用户
curl -X POST http://localhost:8080/api/users \
  -H "Content-Type: application/json" \
  -d '{"name":"张三","email":"zhangsan@example.com"}'
# 3. GET - 获取所有用户
curl http://localhost:8080/api/users
# 4. GET - 获取指定用户
curl http://localhost:8080/api/users/1
# 5. PUT - 更新用户
curl -X PUT http://localhost:8080/api/users/1 \
  -H "Content-Type: application/json" \
  -d '{"name":"李四","email":"lisi@example.com"}'
# 6. DELETE - 删除用户
curl -X DELETE http://localhost:8080/api/users/1

使用 Postman 测试

  1. 打开 Postman
  2. 输入 URL: http://localhost:8080/api/users
  3. 选择不同的 HTTP 方法(GET, POST, PUT, DELETE)
  4. 设置请求头:Content-Type: application/json
  5. 发送请求查看响应

常用注解说明

注解 说明
@RestController 组合了@Controller@ResponseBody
@RequestMapping 映射HTTP请求到控制器方法
@GetMapping 处理GET请求的快捷方式
@PostMapping 处理POST请求的快捷方式
@PutMapping 处理PUT请求的快捷方式
@DeleteMapping 处理DELETE请求的快捷方式
@PathVariable 从URL路径中获取参数
@RequestParam 从查询参数中获取参数
@RequestBody 从请求体中获取参数

项目结构

demo/
├── src/
│   └── main/
│       ├── java/
│       │   └── com/
│       │       └── example/
│       │           └── demo/
│       │               ├── DemoApplication.java
│       │               ├── controller/
│       │               │   ├── HelloController.java
│       │               │   └── UserController.java
│       │               └── model/
│       │                   └── User.java
│       └── resources/
│           └── application.properties
└── pom.xml

这样就完成了第一个 Spring Boot RESTful 接口的创建!记得运行前确保没有端口冲突。

抱歉,评论功能暂时关闭!