跳转至

08 接口设计规范(REST + DTO / VO 教学版)

本章节用于 Spring Boot 项目接口设计教学 / 面试准备 / 架构规范说明
目标:讲清楚 什么是 REST 接口、如何设计 URL / Method、DTO / VO 如何配合使用


一、为什么接口设计很重要?

接口是: - 前后端的契约 - 系统与系统之间的边界

设计不合理会导致: - 前端难以使用 - 接口频繁变更 - 维护成本高 - 面试时难以讲清

👉 企业级项目必须有 统一接口设计规范


二、什么是 REST(RESTful)?

REST 是一种 面向资源的接口设计风格

核心思想: - 一切皆资源 - 使用 HTTP Method 表达行为


三、URL 设计规范(教学重点)

1. 使用名词,不用动词

❌ 错误示例:

/getUser
/createOrder

✅ 正确示例:

/users
/orders


2. 使用复数形式

/users
/orders
/products

3. 使用层级表示资源关系

/users/{userId}/orders

四、HTTP Method 使用规范

Method 含义 示例
GET 查询 GET /products
POST 新建 POST /products
PUT 整体更新 PUT /products/{id}
PATCH 局部更新 PATCH /products/{id}
DELETE 删除 DELETE /products/{id}

面试一句话:

REST 通过 HTTP Method 表达对资源的操作语义。


五、请求参数设计(DTO)

1. 查询参数(Query)

GET /products?name=apple&page=1

对应 DTO:

public class ProductQueryDTO {
    private String name;
    private Integer page;
}


2. 请求体参数(Body)

POST /products
public class ProductCreateDTO {
    private String name;
    private Integer price;
}

六、响应结果设计(VO)

1. 单对象返回

public class ProductVO {
    private Long id;
    private String name;
    private Integer price;
}

2. 列表返回

{
  "list": [],
  "total": 100
}

七、统一响应结构(企业级推荐)

public class ApiResponse<T> {
    private String code;
    private String message;
    private T data;
}

成功示例:

{
  "code": "SUCCESS",
  "message": "ok",
  "data": {}
}


八、接口设计与异常处理的配合

  • 正常流程 → 返回 SUCCESS
  • 业务异常 → 返回业务错误码
  • 系统异常 → 统一 SYSTEM_ERROR

👉 接口不直接返回 Exception


九、接口设计常见误区(面试高频)

1. 一个接口做所有事

❌ /order/doAll

2. Entity 直接作为接口返回

❌ 数据库字段泄露

3. URL 中包含动词

❌ /createUser


十、推荐包结构

com.example.demo
 ├─ controller
 │   ├─ dto
 │   └─ vo
 ├─ service
 ├─ exception
 └─ common
     └─ ApiResponse.java

十一、面试总结用语(可直接背)

在 Spring Boot 项目中,接口通常遵循 RESTful 设计原则,
通过 DTO 作为请求参数、VO 作为响应对象,
并结合统一响应结构和异常处理,
提高接口的可读性、稳定性和可维护性。