惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
Spread Privacy
Spread Privacy
Cloudbric
Cloudbric
V
Vulnerabilities – Threatpost
博客园 - 叶小钗
I
Intezer
S
Secure Thoughts
Jina AI
Jina AI
T
Tenable Blog
博客园 - 【当耐特】
WordPress大学
WordPress大学
W
WeLiveSecurity
宝玉的分享
宝玉的分享
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Google DeepMind News
Google DeepMind News
Schneier on Security
Schneier on Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
B
Blog RSS Feed
Martin Fowler
Martin Fowler
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
Schneier on Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
IT之家
IT之家
小众软件
小众软件
P
Privacy & Cybersecurity Law Blog
V
Visual Studio Blog
S
Securelist
M
MIT News - Artificial intelligence
H
Help Net Security
Scott Helme
Scott Helme
N
News and Events Feed by Topic
SecWiki News
SecWiki News
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园_首页
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
The Cloudflare Blog
T
Tailwind CSS Blog
A
About on SuperTechFans
The Last Watchdog
The Last Watchdog
S
Security @ Cisco Blogs
大猫的无限游戏
大猫的无限游戏
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
H
Heimdal Security Blog
T
The Blog of Author Tim Ferriss
Blog — PlanetScale
Blog — PlanetScale

Casear的技术栈

Ubuntu 26.04 装 NVIDIA 580 内网异机备份 conf 驱动 Razer_GRUB_Theme Fcitx5 输入法配置:切换中文输入法 服务器 zsh 环境配置记录:Zim + p10k + eza + zoxide # ThinkPad T490s Linux 指纹模块启用指南(KDE vanblog使用picgo图床的完整部署教程 vanblog备份恢复评论数据 如何配置一个虚拟显示器,以便远程没有显示器的系统 解决 OpenConnect VPN 由于 JScript 引擎丢失导致的 Error 1 修复 Fuck 2025 ATT&CK红队评估实战靶场二 一言 解决kde环境下切换登陆屏幕(SDDM)后显示异常 rss Linux实用软件分享 Kubuntu 上安装 显卡驱动 和 EnvyControl kubuntu 搜狗输入法安装问题解决 终端工具的选择 chatlog 青龙面板+wxBotWebhook实现自动推送天气 mac 安装 第三方应用问题 zsh 安装与配置,使用 oh-my-zsh 美化终端 pve虚拟机硬盘直通 tldr-pages 安装 pve安装Arch-linux Arch-linux安装桌面环境 提问的艺术极简板 Waline 服务端独立部署解决方案 记-先锋书店 sqli 1-7关 Nginx Proxy Manager安装及避坑指南 Xiaomi-Mall-Home kali设置为中文 vscode连接docker查看代码 DVWA--SQL Injection(Blind)(盲注Python脚本) 使用Hexo生成大量页面时卡死问题解决 在Ubuntu上搭建Fivem服务器 互联网档案计划(Internet Archive) NEZHA监控面板美化 哪吒监控配置 CentOS7安装MySQL8.0 burpsuite ca证书安装 powerShell script 你一句春不晚,我就到了真江南 DVWA靶场--XSS(Reflected)教程 DVWA靶场--JavaScript Attacks (前端攻击) 强网杯2023 谍影重重2.0 wp shell脚本备份 MySQL数据库 青龙面板定时规则 异地容灾备份系统两地三中心 转载 关于躺平 python打包可执行文件 python定义函数 MySQL8.0以上PHP连接问题
api开发-更优雅的[规范响应数据]
casearx@foxm · 2024-07-04 · via Casear的技术栈

请注意,本文编写于 709 天前,最后修改于 709 天前,其中某些信息可能已经过时。

统一响应函数

function sendResponse(res, status, message, data = {}, error = {}) { res.json({ status: status === 200 ? 'success' : 'error', code: status, message: message, data: data, error: error }); }

{ "status": "success", // 描述 HTTP 响应结果:HTTP 状态响应码在 500-599 之间为”fail”,在 400-499 之间为”error”,其它均为”success” "code": 200, // 包含一个整数类型的 HTTP 响应状态码,也可以是业务描述操作码,比如 200001 表示注册成功 "message": "操作成功", // 多语言的响应描述 "data": { // 实际的响应数据 "nickname": "Joaquin Ondricka", "email": "lowe.chaim@example.org" }, "error": {} // 异常时的调试信息 }

  • 统一的数据响应格式,固定包含:code、status、data、message、error
  • 内置 Http 标准状态码支持,同时支持扩展 ResponseCodeEnum 来根据不同业务模块定义响应码
  • 响应码 code 对应描述信息 message 支持本地化,支持配置多语言
  • 合理地返回 Http 状态码
  • 根据 debug 开关,合理返回异常信息、验证异常信息等

调用方法

// 处理GET请求,获取用户信息 app.get('/api/sql/', async (req, res) => { const userId = req.query.id; try { const userInfo = await userModule.getUserInfo(userId); sendResponse(res, 200, "操作成功", userInfo); } catch (error) { console.error('Error fetching user info:', error); sendResponse(res, 500, "服务器错误", {}, { message: error.message }); } });

getUserInfo函数是一个SQL查询的函数,返回一个数组 将响应码 描述 数据 都通过通用操作函数来处理,达到规范化的效果