3、推荐统一使用 ResponseEntity<T> 作为控制器返回类型

SpringBoot:构建统一JSON响应体的最佳实践 本文详细介绍了在SpringBoot项目中构建统一JSON响应体的最佳实践,包括基础响应体结构设计、状态码枚举管理、响应工具类封装及控制器应用。通过规范化的JSON格式,有效降低前后端沟通成本,提升接口可维护性和错误处理能力,适用于各类企业级应用开发。 阅读详情

非常好的问题!你问到了两个企业级微服务设计中的核心实践点:

  1. LoginResponse 的内容应该包含哪些字段?
  2. 是否推荐统一使用 ResponseEntity<T> 作为控制器返回类型?

我们来逐个深入分析,结合真实工业级项目(阿里、京东、美团)的规范,给出可落地、高专业度、强一致性的最佳答案。


✅ 一、LoginResponse 应该包含什么内容?—— 企业级标准定义

🎯 核心目标:

LoginResponse 不是“随便返回一个 token”,而是用户登录后获得的“身份凭证 + 基础信息”的完整集合。

它必须满足:

  • ✅ 安全:不泄露敏感数据
  • ✅ 可用:前端能直接用于 UI 展示和后续请求
  • ✅ 一致:所有服务返回格式统一
  • ✅ 可扩展:未来加字段不影响现有逻辑

✅ 推荐 LoginResponse 结构(JSON 示例)

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "user": {
    "id": 123,
    "username": "zhangsan",
    "nickname": "小张",
    "avatar": "https://cdn.example.com/avatar/123.jpg",
    "email": "zhangsan@example.com",
    "roles": ["USER"],
    "level": "NORMAL",
    "createdAt": "2024-01-01T00:00:00Z"
  },
  "expiresIn": 7200,
  "refreshToken": "rjw98h2k3j4h2k3j4h2k3j4h2k3j4h2k"  // 可选,仅在支持刷新时返回
}

🔍 字段详解(每个都必须有明确理由)

字段类型是否必填说明
tokenString✅ 必填JWT Token,用于后续所有 API 请求的认证凭证
user.idLong✅ 必填用户唯一 ID,供后端系统识别身份
user.usernameString✅ 必填登录名(非显示名),用于系统内部标识
user.nicknameString✅ 必填前端展示用昵称,如“小张”、“李四”
user.avatarString✅ 推荐头像 URL,用于首页、侧边栏等展示
user.emailString⚠️ 可选若需通知或找回密码,建议返回脱敏版本(如 z***@example.com)
user.rolesList<String>✅ 必填角色列表(如 ["USER", "ADMIN"]),用于前端权限控制
user.levelString⚠️ 可选会员等级(如 NORMAL, GOLD, PLATINUM),用于个性化展示
user.createdAtISO 8601 时间戳✅ 推荐用于统计、风控、用户生命周期分析
expiresInInteger✅ 推荐Token 有效期(秒),前端可自动续期(如 7200 = 2小时)
refreshTokenString⚠️ 可选仅在支持刷新机制时返回,用于无感续期

✅ 关键原则:

  • 所有字段都服务于“前端展示”或“客户端认证”
  • 绝不返回密码、手机号、身份证、地址等敏感字段
  • roles 是权限控制的核心依据,必须清晰

❌ 绝对禁止包含的内容

错误字段为什么禁止
passwordHash密码哈希值泄露等于账号被盗
phone手机号属于敏感个人信息,违反 GDPR / 个人信息保护法
address地址由 user-service 管理,不应在此暴露
lastLoginAt属于行为日志,应由审计系统记录,不应返回给客户端
isVerified业务状态,应由前端根据事件驱动更新,不应硬编码在登录响应中

💡 金句:
“登录接口返回的信息,应该是‘你能看到什么’,而不是‘系统知道什么’。”


✅ Java 实体类实现(推荐写法)

package io.urbane.auth.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 登录成功响应对象
 * 功能:
 *   - 包含 JWT Token 和用户基础信息
 *   - 供前端用于存储 Token、显示用户名头像、设置权限
 *
 * 注意:
 *   - 所有字段均为只读,不可被前端修改
 *   - 使用 Lombok @Data 自动生成 getter/setter/toString
 */
@Data
public class LoginResponse {

    private String token;                      // ✅ JWT 认证令牌
    private UserBaseInfo user;                 // ✅ 用户基本信息(脱敏)
    private Integer expiresIn;                 // ✅ Token 有效时间(秒)
    private String refreshToken;               // ⚠️ 可选:刷新令牌(仅当启用刷新机制时返回)

    // ===== 构造函数 =====

    public LoginResponse(String token, UserBaseInfo user) {
        this(token, user, 7200); // 默认 2 小时
    }

    public LoginResponse(String token, UserBaseInfo user, Integer expiresIn) {
        this(token, user, expiresIn, null);
    }

    public LoginResponse(String token, UserBaseInfo user, Integer expiresIn, String refreshToken) {
        this.token = token;
        this.user = user;
        this.expiresIn = expiresIn;
        this.refreshToken = refreshToken;
    }
}

👉 对应的 UserBaseInfo.java(脱敏用户信息)

package io.urbane.auth.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

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

/**
 * 用户基础信息 DTO(用于登录、查询等场景)
 * 特点:脱敏、轻量、只读
 */
@Data
public class UserBaseInfo {

    private Long id;
    private String username;      // 登录名,系统内部使用
    private String nickname;      // 显示名,前端展示
    private String avatar;        // 头像 URL
    private String email;         // 脱敏邮箱:z***@example.com
    private List<String> roles;   // 角色列表,用于前端权限判断
    private String level;         // 会员等级:NORMAL / GOLD / PLATINUM
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "GMT+8")
    private LocalDateTime createdAt; // 注册时间

    // 构造函数省略,可由 Repository 自动映射
}

✅ 为什么用 UserBaseInfo 而不是直接用 User 实体?
防止实体类被意外序列化出敏感字段(如 passwordHash),实现领域模型与传输模型分离(DTO Pattern)


✅ 二、是否推荐统一使用 ResponseEntity<T>?

✅ 结论:强烈推荐统一使用 ResponseEntity<T>

✅ 推荐理由:
ResponseEntity<T> 是 Spring 提供的标准 HTTP 响应封装器,能让你精确控制:

  • HTTP 状态码(200、401、403、500)
  • 响应头(Content-Type、Cache-Control、Location)
  • 响应体(JSON 数据)

📌 比较:普通 @ResponseBody vs ResponseEntity<T>

场景@ResponseBody TResponseEntity<T>
返回状态码固定 200✅ 可自定义(如 401、403)
设置 Header需额外注解 @Header✅ 直接调用 .headers()
异常处理需全局异常处理器捕获✅ 可直接抛出 ResponseStatusException
单元测试难以验证状态码✅ 可断言 response.getStatusCode() == OK
文档规范不够显式✅ 清晰表达意图:“我返回的是一个完整的 HTTP 响应”

✅ 推荐写法:在 Controller 中使用 ResponseEntity

✅ 正确示范(AuthController.java)

@PostMapping("/login")
public ResponseEntity<LoginResponse> login(@Valid @RequestBody LoginRequest request) {
    try {
        LoginResponse response = authService.login(request);
        return ResponseEntity.ok(response); // ✅ 200 OK + JSON Body
    } catch (IllegalArgumentException e) {
        return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build(); // ✅ 401 Unauthorized
    } catch (UserDisabledException e) {
        return ResponseEntity.status(HttpStatus.FORBIDDEN)
                .body(new LoginResponse(null, new UserBaseInfo(), 0, null)); // ✅ 403 + 空响应体
    }
}

@PostMapping("/logout")
public ResponseEntity<Void> logout(@RequestHeader("Authorization") String authorization) {
    try {
        tokenService.blacklistToken(authorization.substring(7));
        return ResponseEntity.noContent().build(); // ✅ 204 No Content
    } catch (Exception e) {
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
    }
}

@PostMapping("/refresh-token")
public ResponseEntity<LoginResponse> refreshToken(@Valid @RequestBody RefreshTokenRequest request) {
    try {
        LoginResponse response = authService.refreshToken(request.getToken());
        return ResponseEntity.ok(response); // ✅ 200 OK
    } catch (InvalidTokenException e) {
        return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build(); // ✅ 401
    }
}

✅ 为什么这样写更优?

优势说明
✅ 语义清晰ResponseEntity.ok() 表示“成功返回”,unauthorized() 表示“未授权”
✅ 易于测试测试框架可断言状态码:assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK)
✅ API 文档友好Swagger/OpenAPI 会自动识别 ResponseEntity 的状态码和类型
✅ 统一错误响应结合全局异常处理器,所有异常都能转换为标准 JSON 错误体

✅ 进阶:配合全局异常处理器,实现“统一响应结构”

你在 GlobalExceptionHandler 中已经统一了错误响应格式:

{
  "code": 401,
  "message": "Token 已过期",
  "path": "/auth/login",
  "timestamp": "2025-04-05T10:30:00Z"
}

那么,正常响应也应当保持结构一致性!

✅ 最佳实践:让 LoginResponse 成为“统一响应体的一部分”

你有两种选择:

方案描述推荐度
✅ 方案 A:ResponseEntity<LoginResponse>返回原始 DTO,由网关/前端解析⭐⭐⭐⭐⭐ 强烈推荐
❌ 方案 B:包装成 ResponseResult<LoginResponse>{"code":200,"data":{...}}⭐⭐☆☆☆(不推荐)

❌ 为什么不推荐包装成 ResponseResult?

{
  "code": 200,
  "message": "操作成功",
  "data": {  // 👈 多了一层嵌套
    "token": "...",
    "user": { ... }
  }
}
问题:
  1. 前端需要多一层 .data 解析 → 增加代码复杂度
  2. 违背 RESTful 设计:HTTP 状态码就是语义,不需要再包一层 code
  3. 不符合行业标准:主流平台(GitHub、Stripe、AWS)都不这么干
  4. 破坏 OpenAPI 文档:Swagger 无法正确识别嵌套结构

✅ 真正专业的 API 是这样的:

  • 成功 → 200 OK + { token: "...", user: {...} }
  • 失败 → 401 Unauthorized + { code: 401, message: "...", path: "..." }

✅ 你的 ResponseResult<T> 应该只用于:

  • 内部 RPC 调用(如 Feign 调用其他服务)
  • 旧系统兼容
  • 对外 API(REST)一律不用!

✅ 最终推荐架构总结

层级推荐方式
Controller 返回类型ResponseEntity<LoginResponse>
LoginResponse 内容token + user(脱敏) + expiresIn + 可选 refreshToken
user 字段只包含前端需要的非敏感信息(ID、昵称、头像、角色)
敏感字段绝不出现密码、手机号、身份证、地址
错误响应全局异常处理器返回统一格式:{code, message, path, timestamp}
响应体结构不要套娃!不要 ResponseResult<T>,直接裸奔 LoginResponse

✅ Bonus:Postman / Swagger 接口文档示例

📌 /auth/login —— POST

Request Body:
{
  "username": "zhangsan",
  "password": "123456"
}
Success Response (200 OK):
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "user": {
    "id": 123,
    "username": "zhangsan",
    "nickname": "小张",
    "avatar": "https://cdn.example.com/avatar/123.jpg",
    "email": "z***@example.com",
    "roles": ["USER"],
    "level": "NORMAL",
    "createdAt": "2024-01-01T00:00:00Z"
  },
  "expiresIn": 7200
}
Error Response (401 Unauthorized):
{
  "code": 401,
  "message": "用户名或密码错误",
  "path": "/auth/login",
  "timestamp": "2025-04-05T10:30:00Z"
}

✅ 前端代码示例(Vue / React):

const res = await axios.post('/auth/login', { username, password });
if (res.status === 200) {
  localStorage.setItem('token', res.data.token);
  store.commit('setUser', res.data.user);
} else {
  alert(res.data.message); // 直接取 message,无需 .data.message
}

✅ 总结:一句话记住黄金法则

✅ LoginResponse 是“用户身份通行证”,不是“响应包装器”。

使用 ResponseEntity<LoginResponse>,不套 ResponseResult,不藏敏感字段,不搞嵌套结构。
你不是在写“Java 对象”,你是在设计“互联网 API”。


🚀 最终行动清单

步骤操作
✅ 1修改 LoginResponse,只保留 token, user, expiresIn, refreshToken
✅ 2删除 User 实体中所有敏感字段(密码、手机号等)
✅ 3创建独立的 UserBaseInfo DTO,用于返回
✅ 4所有 @PostMapping 方法返回 ResponseEntity<LoginResponse>
✅ 5移除所有 ResponseResult<T> 在对外 API 中的使用
✅ 6在 Swagger/OpenAPI 中确认 LoginResponse 结构正确显示
✅ 7通知前端团队:从此以后,登录响应是裸结构,不是 { code: 200, data: ... }

📦 Bonus:我为你准备好了完整模板

如果你希望我为你提供:

  • ✅ 完整的 LoginResponse.java 和 UserBaseInfo.java 文件
  • ✅ 带注释的 AuthController.java(全部使用 ResponseEntity)
  • ✅ Postman Collection(登录、登出、刷新测试用例)
  • ✅ OpenAPI YAML 定义(供 Swagger 使用)
  • ✅ 单元测试示例(MockMvc 验证状态码)

👉 请回复:
“请给我完整的 LoginResponse 和 ResponseEntity 模板包!”

我会立刻发送你一份开箱即用的企业级认证接口完整实现包,包含所有文件、注释和测试,你只需复制粘贴,即可让团队进入专业 API 设计时代 💪

SpringBoot+Vue高校毕业生就业指引平台毕设实战:从CRUD到智能推荐 在Web应用开发领域,SpringBoot与Vue.js组成的前后端分离架构已成为企业级项目的标准技术选型,其核心价值在于通过清晰的职责分离提升开发效率与系统可维护性。SpringBoot基于约定优于配置的原则,简化了Java后端服务的搭建与部署;Vue.js则凭借其响应式数据绑定与组件化开发模式,高效构建交互式用户界面。两者结合,能够快速实现数据驱动的业务系统。在高校毕业生就业场景中,传统的信息发布平台往往局限于基础的增删改查操作,而现代就业指引系统需要解决信息过载下的精准匹配问题。这便引入了推荐算法的工 阅读详情

相关推荐

SpringBoot+Thymeleaf+AI大模型:校园课程推荐系统设计与实现

推荐系统是解决信息过载的核心技术,通过分析用户行为与内容特征,实现个性化资源匹配。传统协同过滤与内容推荐虽能生成候选列表,但缺乏解释性,用户往往难以理解推荐依据。随着大模型技术的成熟,将自然语言生成能力融入推荐链路,可显著提升系统的交互体验与决策辅助价值。在高校选课场景中,课程数量多、信息分散,学生需要更智能的选课辅助工具。基于SpringBoot+Thymeleaf构建的校园课程推荐系统,融合协同过滤、内容推荐与混合推荐策略,并接入AI大模型生成个性化推荐理由及智能问答,为毕设项目提供了兼具工程实践与技术

weixin_34268310的博客 868

SpringBoot请求参数与响应返回值,ResponseEntity<T>自定义响应

SpringBoot请求参数与响应返回值,ResponseEntity自定义响应

m0_62652709的博客 6049

SpringMVC响应处理进阶:静态资源映射与响应数据统一修改实战

在Web应用开发中,前后端数据交互与静态资源访问是两大基础场景。浏览器向服务端发起请求后,SpringMVC通过DispatcherServlet统一分发,由HandlerMapping匹配处理器,再经拦截器、Controller、消息转换器生成响应。理解这条链路,才能解决静态资源404、响应结构不统一、跨域预检失败等高频问题。静态资源映射决定了HTML/CSS/JS能否被正确加载,而ResponseBodyAdvice与拦截器则提供了在响应返回前统一加工数据的能力,适合实现全局响应包装、日志记录或敏感信息

weixin_34396902的博客 353

Django - 视图层 - HttpResponse

这里写目录标题使用方法属性方法has_header(header)setdefault(header, value)set_cookie()HttpResonse的子类JsonResponse类StreamingHttpResponse类FileResponse类 我们编写的每个视图都有实例化, 填充和返回一个HttpResponse对象. 就是函数的return值 使用方法 返回一个字符串 >>> from django.http import HttpResponse >&g

qq_33962481的博客 648

基于SpringBoot与协同过滤算法的电影推荐系统毕业设计实践指南

推荐系统作为连接用户与海量信息的关键技术,其核心原理是通过分析用户历史行为数据,挖掘用户偏好与物品特征之间的关联,从而实现信息的个性化分发。协同过滤是其中经典且广泛应用的技术路径,通过计算用户或物品间的相似度来预测兴趣。在工程实践中,Java与SpringBoot框架因其成熟的生态和高效的开发模式,成为构建此类系统后端服务的常见选择。结合MySQL进行数据持久化,并运用余弦相似度等算法,可以高效实现从用户-物品矩阵构建到个性化推荐生成的完整流程。本文聚焦于电影推荐这一典型应用场景,详细阐述了如何将协同过滤算

weixin_33895475的博客 330

STM32H743 SD卡读写避坑实录:CubeMX配置MDMA给FATFS,我的FreeRTOS项目踩了哪些雷?

本文详细解析了STM32H743在CubeMX配置中结合SDMMC、MDMA与FATFS的实战避坑指南,特别针对FreeRTOS环境下的SD卡读写问题提供了解决方案。从时钟配置到FATFS参数设置,再到DMA缓存维护和FreeRTOS集成技巧,帮助开发者高效解决数据损坏、DMA传输错误等常见问题,提升项目稳定性。

weixin_30878501的博客 493

5.Spring ResponseEntity对象详细及其源码分析

ResponseEntity代表返回的数据是一个对象,在Spring MVC中,请求数据到对象和对象到响应数据的转换是通过消息转换器来完成的。

相互学习 共同进步 1227

Overleaf+EndNote+BibTeX:手把手搞定Elsevier期刊投稿的参考文献格式(避坑指南)

本文详细介绍了如何利用Overleaf、EndNote和BibTeX三大工具无缝协作,解决Elsevier期刊投稿中的参考文献格式问题。从工具链配置、文献库导出、BibTeX文件优化到Overleaf集成与编译,提供全流程指南和常见问题解决方案,帮助学术新手高效完成Elsevier期刊投稿。

weixin_30616969的博客 509

RestTemplate

getForEntity() /** * 参数1: String类型 或 URI类型的请求地址 * 参数2: 指定返回的实体类型,class对象 * 参数3: uri参数,可以是变长数组或map * 返回值:ResponseEntity<T>是Spring对HTTP响应的封装,包括了几个重要的元素,如响应码、contentType、contentLength、response ...

hello world 239

【电击防护篇】电击防护技术详解:从人体效应到接地系统全解析

本文系统讲解了电击防护的关键知识,包括电流对人体的影响(如30mA是心室颤动阈值)、人体电阻特性(700Ω-6100Ω)以及电气接触防护措施。重点分析了TT、TN和IT三大接地系统的结构特点与应用场景,强调TN-S系统最安全,IT系统供电连续性最佳。详细介绍了漏电保护器(RCD)的工作原理与选型指南,建议人身防护选用30mA高灵敏度RCD。文章通过对比表总结三大系统的安全性、成本及适用场景,为电气安全设计提供实用参考。

2301_81299416的博客 1742

【新华三】通过路由复制实现Public与VRF路由互通

如上图所示,S6900设备里有两张表,一张是public路由表,默认所有的路由都存放在public路由表里;除此之外还创建了VRF test,因此此设备还有VRF test路由表。通过路由复制实现Public路由和VRF路由互通,默认情况下VRF里的路由单独一张路由表,默认情况下与public路由表相互隔离,两张表之间不可互访。此时的public路由表里面并没有test的路由表。public路由表与VRF路由表之间相互隔离。此时VRF test里的路由也没有其他VRF或Public里的路由,相互隔离。

五大连池的镜子 5277

ResponseEntity返回数据、状态、头部信息

ResponseEntity :标识整个http相应:状态码、头部信息、响应体内容(spring) @ResponseBody:加在请求处理方法上,能够处理方法结果值作为http响应体(springmvc) @ResponseStatus:加在方法上、返回自定义http状态码(spring) ResponseEntity事例: import com.baidu.item.pojo...

ywb201314的专栏 5369

华为OD机试真题 新系统2026-04-08 Python&JS 实现【直捣黄龙】

小王在玩一款叫做直捣黄龙的小游戏,在该游戏中他需要从入口位置进入敌营,绕过哨兵的层层封锁,达到敌军司令部实施斩首行动。 敌军阵营是一个n*n的矩阵,入口在坐标(0,n/2),敌军司令部在坐标(n-1,n/2),每个哨兵警戒以自己为中心的9宫格,一旦被哨兵发现则行动失败。

MISAYAONE的博客 586

Spring ResponseEntity详解:HTTP响应封装与实践

HTTP响应是Web开发中的基础概念,它由状态码、响应头和响应体三部分组成。Spring框架通过ResponseEntity类提供了对HTTP响应的完整封装,开发者可以精确控制状态码、自定义响应头以及序列化响应体。这种封装不仅遵循了RESTful设计原则,还能有效处理文件下载、错误响应等特殊场景。在微服务架构和前后端分离项目中,合理使用ResponseEntity可以实现更规范的API设计,配合RestTemplate或WebClient还能简化服务间调用。本文以Spring Boot和Spring MVC

weixin_30243533的博客 327

perl 安装DBI和DBD

还可以从cpan.perl.org站点下载tar压缩文件形式的源代码发行版本,解压缩后,切换到相应的文件目录 cd DBI-1.54 perl Makefile.PL make make test make install 安装DBD时候 需要export ORACLE_HOME 验证安装: perldoc DBD::Oracle perldoc DBI 在线文档; perldoc -m

zhaoyangjian724的专栏 1754

Windows下Anaconda和PyTorch深度学习环境完整安装配置教程

本文详细介绍了在Windows系统下安装配置PyTorch深度学习环境的完整流程。主要内容包括:硬件环境检查(确认GPU支持)、Anaconda环境管理系统的安装与配置、虚拟环境的创建与管理方法、以及PyTorch及其相关组件的安装指南。特别强调了版本兼容性选择策略(如CUDA版本的确定)、显卡驱动更新、使用Anaconda创建隔离的PyTorch专用环境等关键步骤。无论是使用CPU还是GPU版本,读者都能按照教程快速搭建稳定的PyTorch开发环境,为深度学习项目打下坚实基础。

FJN110的博客 971

SpringMVC_20_使用HttpMessageConverter T 实现了上传文件(不推荐)和下载文件操作

使用HttpMessageConverter&lt; T&gt;将请求信息转化并绑定到处理方法的入参中或将响应结果转化为对应类型的响应信息,Spring提供了两种途径: 使用@RequestBody/@ResponseBody对处理方法进行标注 使用HttpEntity&lt; T&gt;/ResponseEntity&lt; T&gt;作为处理方法的入参或返回值 当控制器处理方法使用到@...

方兴未艾 1781

YOLOv11改进 - 卷积Conv | GCNet之金箍棒块GCBlock : 重参数化捕获全局依赖 | CVPR 2025

文介绍了GCBlock在YOLOv11中的结合应用。GCBlock是GCNet的核心组件,能高效捕获特征图中的全局依赖关系,融合了非局部网络和挤压 - 激励网络的优势,降低计算成本并保障模型性能。其遵循“上下文建模 - 特征变换 - 特征融合”框架,通过全局平均池化、全连接层等操作生成注意力权重。我们将GCBlock集成进YOLOv11,替代原有的部分卷积模块,实现更高效的全局上下文建模。实验证明,YOLOv11-GCBlock在目标检测任务中表现出色,展现了GCBlock在深度学习中的广泛应用前景。

魔改工程师的博客 905

【JavaEE】SpringBoot 统一功能处理: 拦截器、统一返回与全局异常

本文系统讲解SpringBoot中拦截器、统一返回格式与异常处理的实现原理与实践。通过自定义HandlerInterceptor实现登录校验,避免重复代码;利用@ControllerAdvice和ResponseBodyAdvice统一数据返回结构,提升接口一致性;结合ExceptionAdvice实现全局异常捕获,简化错误处理。文章还剖析了相关源码脉络,并指导前端对接,帮助开发者高效构建规范、可维护的Web项目。

REGARD712的博客 388

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Spring Boot + Vue3 实战:构建AI全栈旅游推荐应用

全栈开发是现代Web应用构建的核心模式,它要求开发者同时掌握前端交互与后端业务逻辑。其原理在于通过清晰的接口(如RESTful API)实现前后端分离,使数据在用户界面、服务器和外部服务间高效流转。这种架构的价值在于提升了开发效率、系统可维护性和团队协作能力,广泛应用于电商、社交、内容平台等各类互联网产品。随着人工智能技术的普及,将大语言模型(LLM)等AI能力集成到传统Web应用中,构建智能化的“AI全栈”应用,已成为提升产品竞争力的新趋势。本文以Spring Boot和Vue3为核心技术栈,通过一个旅游

axfcjwkbi259888707的博客 419

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Spring MVC 4.0 JSON处理全解析与实战

JSON作为现代Web开发中前后端交互的标准数据格式,其高效处理能力直接影响系统性能。Spring MVC框架通过HttpMessageConverter机制实现对象与JSON的自动转换,核心原理是基于Jackson库的序列化/反序列化过程。在RESTful API开发中,合理使用@ResponseBody、ResponseEntity等注解能显著提升开发效率,而Jackson的定制化配置则能满足日期格式化、空值过滤等业务需求。针对高频场景如集合处理、循环引用等问题,Spring MVC 4.0提供了成熟的

weixin_33694620的博客 340

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Spring Boot 3 + Vue 3 一小时快速构建健身管理系统

前后端分离架构是现代Web开发的主流模式,其核心原理是将前端界面与后端业务逻辑解耦,通过RESTful API进行数据交互。这种架构的技术价值在于提升了开发效率、实现了技术栈的灵活选择,并便于团队协作。在应用场景上,它广泛适用于各类管理后台、电商平台及企业级应用。本文以健身管理系统为例,结合Spring Boot 3和Vue 3两大热门框架,手把手演示如何快速实现一个具备增删改查功能的完整项目,帮助开发者理解从环境搭建、API设计到前端界面集成的全流程,尤其适合课程设计及毕业设计参考。

weixin_30326515的博客 335

Spring Boot 3与Vue 3全栈实战:从零构建超市管理系统

在Java全栈开发领域,前后端分离架构已成为现代Web应用开发的主流范式。其核心原理在于将后端业务逻辑与前端用户界面解耦,后端通过RESTful API提供数据服务,前端则专注于交互与展示,两者通过HTTP协议进行JSON格式的数据通信。这种架构模式的技术价值在于提升了开发效率、便于团队协作,并增强了系统的可维护性与可扩展性。典型的应用场景包括各类企业级信息管理系统,如电商后台、CRM系统等。本文聚焦于一个具体的实战案例——超市管理系统,它涵盖了商品管理、员工管理等核心业务模块,旨在帮助开发者理解如何将Sp

weixin_34146805的博客 374

Spring Boot宠物健康管理:能量计算与补充推荐微服务实践

在宠物健康管理与Web应用开发领域,微服务架构和RESTful API设计是构建可扩展、可维护系统的核心技术。其原理在于将复杂业务拆分为独立、松耦合的服务,通过标准接口进行通信,从而提升开发效率和系统弹性。在宠物健康这类垂直场景中,这种技术价值尤为凸显,它能将专业领域知识(如能量计算模型)封装为可复用的服务。具体到应用场景,例如需要根据犬只活动事件动态计算能量缺口并推荐营养补充方案时,便可基于Spring Boot快速实现一个包含事件感知、能量计算引擎和推荐策略的独立微服务。本文以“小狗补充Pip能量”这一

weixin_33834628的博客 443

全栈个人网站开发部署实战:Vue 3 + Spring Boot 3 从开发到上线

全栈开发是现代Web应用构建的核心模式,它通过前后端分离的架构,将用户界面与业务逻辑解耦,实现高效协作与独立部署。其技术原理在于前端框架(如Vue.js)负责视图渲染与用户交互,后端框架(如Spring Boot)提供RESTful API处理业务逻辑与数据持久化。这种模式的技术价值在于提升了开发效率、应用可维护性和团队协作能力,广泛应用于个人博客、企业官网、管理后台等场景。本文以个人网站项目为例,详细演示了如何利用Vue 3、TypeScript、Vite构建现代化前端,并结合Spring Boot 3、

weixin_33795093的博客 310

Swagger 3注解实战:从基础到高阶,打造专业API文档

在微服务与前后端分离架构中,清晰的API文档是保障团队协作效率的基石。其核心原理在于通过代码即文档(Code as Documentation)的方式,将接口定义、参数约束与业务逻辑紧密绑定,从而自动生成准确、实时、可交互的文档。这一实践的技术价值在于极大降低了沟通成本,避免了传统文档与代码脱节的维护难题。在实际应用场景中,开发者常面临参数描述模糊、响应不明确、复杂模型难以展示等挑战。本文聚焦于Swagger 3注解的深度应用,通过解析@Operation、@Parameter、@Schema等核心注解的组

weixin_30443747的博客 346
上一篇: 4、urbane-commerce 认证请求 DTO 设计规范
下一篇: 一个完整、生产级、大厂风格的根 pom.xml 参考示例
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值