服务端之NestJS接口响应message编写规范详解、写给前后端都舒服的接口、API提示信息标准化

作者:焊码IoT日期:2025/10/12

MENU

  • 前言
  • 定义
  • 提示信息设计原则
  • 提示信息风格分类
  • 提示信息模板化设计
  • 国际化与多语言支持
  • 最佳实践
  • 参考示例(NestJS响应)
  • 总结
  • 统一风格示例清单推荐
  • API响应message清单(可直接使用)

前言

在现代后端开发中,接口响应不仅仅是数据的传递,还承担着向前端或用户传递操作状态和结果的功能。一个规范、统一的message字段设计,可以显著提升系统的可维护性、前端开发效率和用户体验。


定义

响应结构示例(NestJS风格)

1return {
2   status: 200, // 可选,HTTP状态码
3   message: '获取数据成功', // 提示信息
4   data: {
5       list, // 数据列表
6       page: 1, // 当前页
7       size: 10, // 每页数量
8       total: list.length // 数据总数
9   }
10};
11

各字段作用

字段类型说明
statusnumberHTTP或自定义状态码,用于程序判断
messagestring操作反馈信息,可显示给用户或用于日志
dataobject实际返回的数据对象,包含列表、分页或其他信息

提示信息设计原则

简洁明了 1、不宜过长,一般3~12个汉字。 2、避免含糊不清的词,如“完成了”、“OK”等。


统一风格 1、同一项目接口建议使用统一动词+状态组合,例如:获取数据成功、数据加载完成。


上下文清晰 1、提示信息应体现操作对象或类型,如“用户列表获取成功”而不是“获取成功”。


可扩展与模板化 1、对于多类型数据返回,可使用模板化语法:

1message: `${dataType}获取成功`
2

2、如 设备列表获取成功、订单数据获取成功


面向用户与面向开发分层 1、前端提示:简短易懂,强调用户操作状态。 2、后台日志 / 文档:正式、完整,便于排查接口状态。


提示信息风格分类

简洁风格(前端显示)

场景示例
通用成功获取数据成功、操作成功
列表数据数据加载完成、列表加载成功
数据更新更新成功、保存成功

正式 / 日志风格(后台接口 / 接口文档)

场景示例
数据获取数据已成功获取、列表数据已返回
数据更新数据更新操作已完成、保存操作成功
数据删除删除操作已完成、记录已成功删除

带数量 / 上下文提示

场景示例
列表数据已成功获取用户列表,共15条数据
分页数据列表数据获取成功,共10条记录,当前页1
操作反馈设备列表加载完成,共20条可用设备

带操作指引提示

场景示例
后续操作提示数据加载成功,可进行下一步操作
页面跳转提示数据获取成功,请查看详情
用户操作操作成功,数据已更新

提示信息模板化设计

模板 为了统一风格和减少重复代码,可设计模板:

1function buildMessage(dataType: string, action: '获取' | '加载' | '更新' | '删除', extra?: string) {
2   return `${dataType}${action}成功${extra ? `${extra}` : ''}`;
3}
4
5// 示例
6message: buildMessage('用户列表', '获取', `${list.length}`)
7

输出:用户列表获取成功,共10条


模板化好处: 1、统一风格,易维护 2、可动态生成提示内容 3、可适配多语言(国际化)


国际化与多语言支持

模板 在国际化项目中,message应使用 语言文件或翻译key,避免硬编码:

1return {
2   message: i18n.__('data.fetch_success'),  // 英文:Data fetched successfully
3   data
4};
5

好处 1、适配不同语言 2、前端可直接展示翻译内容 3、后端日志仍可使用统一key便于排查


最佳实践

前端提示短小清晰 1、数据加载完成、获取数据成功


后台 / 日志提示正式完整 1、数据已成功获取、列表数据已返回


数量提示增加用户反馈 1、列表数据获取成功,共${list.length}条


模板化 + 动态内容 1、提高复用率,降低出错率


避免模糊词 1、不使用“OK”、“完成了”、“操作成功了” 2、必须明确操作对象、状态或数量


参考示例(NestJS响应)

1return {
2   status: 200,
3   message: `用户列表获取成功,共 ${list.length}`,
4   data: {
5       list,
6       page: 1,
7       size: 10,
8       total: list.length
9   }
10};
11

1、前端显示,用户列表获取成功,共10条 2、日志可记录status+message用于接口监控


总结

1、message字段是接口的重要组成部分,承担操作反馈和提示作用。 2、优化目标:简洁、统一、明确、可扩展、可国际化。 3、规范化提示信息: 3.1、前端提示:短小清晰,用户友好 3.2、后端日志 / 文档:正式完整,便于排查 3.3、可模板化,适应多接口、多数据类型 3.4、可动态添加数量或操作引导


统一风格示例清单推荐

类型示例message
数据获取获取数据成功 / 数据已成功获取 / 列表数据获取成功,共N条
数据更新更新成功/数据更新操作已完成
数据删除删除成功/记录已成功删除
操作提示数据加载成功,可进行下一步操作
列表提示用户列表获取成功,共 N条

API响应message清单(可直接使用)

1、前端提示(简洁直观) 获取数据成功、数据加载完成、操作成功、保存成功、更新成功、删除成功


2、后端日志 / 正式风格(完整清晰) 数据已成功获取、数据获取操作完成、列表数据已返回、数据更新操作已完成、记录已成功删除、请求已成功处理


3、列表类提示(带上下文) 用户列表获取成功、设备列表获取成功、订单列表获取成功、日志记录获取成功、配置数据获取成功


4、分页 / 带数量提示 列表数据获取成功,共${list.length}条、用户列表加载完成,共${list.length}条、数据获取成功,当前页${page}/共${totalPages}页、数据加载成功,本页${list.length}条,总数${total}条、查询成功,符合条件的数据共${total}条


5、操作提示 / 引导型 数据加载成功,可进行下一步操作、操作成功,数据已更新、删除成功,记录已移除、保存成功,请刷新查看、数据获取成功,请查看列表


服务端之NestJS接口响应message编写规范详解、写给前后端都舒服的接口、API提示信息标准化》 是转载文章,点击查看原文


相关推荐


Ling-1T:蚂蚁百灵如何以“非思考”策略,开启万亿参数效率新篇章?
墨风如雪2025/10/10

2025年10月9日,AI世界再次被一颗“重磅炸弹”点燃。蚂蚁集团百灵大模型团队正式发布了其Ling 2.0系列的首款旗舰模型——Ling-1T。这不仅仅是一个拥有万亿参数的通用大语言模型,它更代表着蚂蚁集团在大模型设计理念上的一次大胆创新和实践突破。它已全面开源,正等待着全球开发者共同探索其无限潜力。 “非思考”定位:速度与精准的完美结合 初听“非思考模型”,你或许会感到好奇。这并非 Ling-1T 不具备推理能力,而是蚂蚁集团对大模型家族的一种策略性划分。在百灵模型矩阵中,“Ling系列”


C# 泛型(Generic)
wjs20242025/10/9

C# 泛型(Generic) 泛型是C#编程语言中一种强大的功能,它允许我们在不具体指定数据类型的情况下编写代码。这种设计模式使得代码更加通用、灵活,并且可以避免类型转换的错误。下面将详细探讨C#泛型的概念、应用场景、实现方法以及相关最佳实践。 泛型的概念 在C#中,泛型允许我们定义可以支持多种数据类型的类或方法。这种类型参数化的机制使得代码更加通用,从而减少了类型转换的需要,并提高了代码的复用性。 泛型的好处 代码复用:通过泛型,我们可以定义一次模板,然后在多个地方复用。


Spring Boot 实现微信登录,So Easy !
皮皮林5512025/10/7

前言 小程序登录在开发中是最常见的需求,哪怕小程序登录不是你做,你还是要了解一下流程,后续都要使用到openId和unionId,你需要知道这些是干什么的。 需求分析 点击登录会弹出弹窗,需要获取用户手机号进行登录。 图片 微信登录业务逻辑规则: 图片 思路说明 参考微信官方文档的提供的思路,官方文档: developers.weixin.qq.com/miniprogram… 微信官方推荐登录流程: 图片 注意点: • 前端在小程序集成微信相关依赖,调用wx.login获取临时登录


uniapp微信小程序安卓手机Touchend事件无法触发
一诺滚雪球2025/10/6

前言 在使用uniapp开发微信小程序时,需要做一个下拉功能,使用touch事件实现。实际情况出现了touchend事件无法触发的情况。 如何解决呢? 1. 解决方案 移动项目开发过程中,经常需要用到滑动的事件来处理一些效果。正常情况下,我们会通过  touchstart->touchmove->touchend  的过程来定义这个事件。这些事件的触发顺序是  touchstart, touchmove, touchmove ….. touchend。 绝大部分平板或手机是这样有序执行。但是以A


Python 的内置函数 anext
IMPYLH2025/10/4

Python 内建函数列表 > Python 的内置函数 anext 如果你熟悉 next() 函数,那么 anext 就是它的异步版本,专为异步迭代器(async for 循环)设计。随着 Python 异步编程(asyncio)的普及,anext 在协程(coroutine)环境下提供了更优雅的方式来获取异步迭代器的下一个值。 anext 的函数原型如下: async def anext(async_iterator): ''' 获取异步迭代器的下一数据项, 没


VB6 ADO没有轻量级内存数据库吗?类似SQLITE
专注VB编程开发20年2025/10/3

ACCESS数据库很方便,为什么不实现一个内存版的数据库?比如创建MDB时实际保存到内存区域,再用内存映射为文件句柄,然后就要吧进行读写操作了。不需要任何新的SQL等技术,唯一的区别就是把从硬盘读写变成内存读写,如果硬盘占用10MB,内存可以预分配50M空间,插入数据可以不断扩展虚拟文件的大小。只不过数据库文件锁也要做内存文件,基本不需要多用户访问。 abc.mdb , abc.ldb 不过现在硬盘也便宜了,怕高频访问掉速的话也可以用RAMDISK虚拟内存硬盘,或者使用SQLITE,SQL S


卡尔曼滤波
不三不四୭2025/10/2

在动态系统的状态估计领域,卡尔曼滤波 (Kalman Filter) 作为一种最优线性滤波算法,具有里程碑式的地位。自 1960 年由鲁道夫・卡尔曼 (Rudolf E. Kalman) 提出以来,卡尔曼滤波已经广泛应用于导航、控制、信号处理、图像处理等众多领域。它的核心优势在于能够通过融合系统模型预测和传感器测量这两种不同来源的信息,提供最优的状态估计结果,特别适用于处理带有噪声的数据。​ 卡尔曼滤波的卓越性能源于其独特的递归结构,它不需要存储所有历史数据,而是通过不断更新当前状态估计,高效地


Docker linux 离线部署springcloud
qq_171520352025/10/2

搭建dcoker环境 1. 首先在有网络的机器上下载Docker的离线安装包:    - 访问 https://download.docker.com/linux/static/stable/x86_64/    - 下载对应版本的 docker-<version>.tgz 文件 2. 将下载的安装包传输到目标Linux机器上(可以使用U盘或其他存储设备) 3. 在目标机器上执行以下命令:    ```bash    # 解压安装包    tar xzvf docker-


链表转置算法
C_lea10/2/2025

node(4)->node(3)->node(2)->node(1)->node(0)结果,但是运行的时候发现不正确,,这个会导致链表的next指针被修改了,那么n.next肯定指向不了真正的下一个对象。**思考步骤:**遍历一次就要形成一个新的转置链表,首先想到的就是。所以我们需要定义一个临时变量,保存链表的next内容。看上去很简单,整个遍历完毕后,就是。我们在遍历链表的时候肯定是这么来的。但是我们在上文遍历的情况下,设置了。最后输出的pre就是转置后的链表了。给出链表node,如何转置并输出。


华三交接机HCL模拟器搭建DHCP功能
cws20040110/1/2025

dhcp server ip-pool vlan10 创建基于接口VLAN10的地址池。通过dis dhcp server ip-in-use 或者用 dis arp。(10)PC_26、PC_30和PC_5都能通过DHCP自动获取IP地址。dis dhcp server ip-in-use 查看已分配地址。(2)在交换机分别创建VLAN 10、VLAN 20、vlan 30。dhcp server ip-pool vlan30 创建地址池。

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0