1. 项目概述:当RESTful遇上SpringMVC
最近在重构一个老项目的API接口时,我决定全面采用RESTful风格设计。作为Java开发者,SpringMVC框架自然是首选工具。这个案例完整记录了我从零搭建RESTful服务的过程,包含URI设计规范、状态码处理、HATEOAS实现等实战细节。如果你正在为如何规范地实现RESTful API而头疼,这篇踩坑实录或许能帮你节省80%的摸索时间。
传统Web应用常采用/getUser?id=1这样的参数式URL,而RESTful架构要求我们将资源本身作为核心概念。举个例子,用户管理模块的API会变成这样:
GET /users获取用户列表POST /users创建新用户GET /users/1获取ID为1的用户详情PUT /users/1全量更新用户PATCH /users/1部分更新用户DELETE /users/1删除用户
这种设计不仅URI更加语义化,还能充分利用HTTP协议本身的特性。下面我们就通过具体案例,看看SpringMVC如何完美支持这些特性。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境搭建与基础配置
2.1 项目初始化
使用Spring Boot 2.7.x作为基础框架,pom.xml关键依赖如下:
xml复制<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
</dependencies>
注意:jackson-dataformat-xml让API支持Content Negotiation(内容协商),客户端通过Accept头指定获取JSON或XML格式数据
2.2 全局配置类
创建WebMvcConfigurer实现类统一处理跨域和URI格式:
java复制@Configuration
public class WebConfig implements WebMvcConfigurer {
// 统一使用下划线风格URI
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
configurer.setUseSuffixPatternMatch(false)
.setUseTrailingSlashMatch(false);
}
// 全局CORS配置
@Override
public void addCorsMappings(CorsRegistry registry)
