本文目录导读:

我来详细介绍如何用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 测试
- 打开 Postman
- 输入 URL:
http://localhost:8080/api/users - 选择不同的 HTTP 方法(GET, POST, PUT, DELETE)
- 设置请求头:
Content-Type: application/json - 发送请求查看响应
常用注解说明
| 注解 | 说明 |
|---|---|
@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 接口的创建!记得运行前确保没有端口冲突。