当前位置: 首页 > article >正文

开发中后端返回下划线数据,要不要统一转驼峰?

先说结论。看情况!!!!

  • 前端 主要用 JS/TS 建议后端返回 camelCase,减少前端转换成本。
  • 后端 主要是 Python/Go 建议保持 snake_case,前端做转换。
  • 但是团队统一风格最重要!如果统一返回驼峰就驼峰,统一下划线那就下划线。

建议统一使用驼峰(camelCase)的情况

适用情况:

  1. 前端(Vue/React)使用 JavaScript/TypeScript

    • JavaScript/TypeScript 代码风格通常使用 驼峰命名,如果后端返回的是 下划线命名(snake_case),前端需要额外转换,增加维护成本。
    • 例如:
      {
        "userName": "张三",
        "orderList": []
      }
      
      在前端可以直接 user.userName 访问,不需要转换。
  2. 团队约定统一风格

    • 如果团队约定所有数据(前后端)都使用驼峰,则后端可以提前转换,保证一致性,减少前端适配工作。

后端转换方式(Node.js 示例)

  • 如果数据库字段使用 snake_case,可以在返回数据时转换:
    const toCamelCase = (obj) => {
      if (Array.isArray(obj)) {
        return obj.map(toCamelCase);
      } else if (obj !== null && typeof obj === 'object') {
        return Object.keys(obj).reduce((acc, key) => {
          const camelKey = key.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
          acc[camelKey] = toCamelCase(obj[key]);
          return acc;
        }, {});
      }
      return obj;
    };
    
    // 示例:
    const dbData = { user_name: "张三", order_list: [] };
    console.log(toCamelCase(dbData));
    // { userName: "张三", orderList: [] }
    

不转换,前端自己适配情况

适用情况:

  1. 后端数据库、API 规范统一使用 snake_case

    • 例如后端是 Python(Django、Flask)Go,通常 API 返回 snake_case,如果强行改为 camelCase,可能会违背语言习惯
    • 例如:
      {
        "user_name": "张三",
        "order_list": []
      }
      
    • 前端可以在请求拦截器中转换:
      const toCamelCase = (obj) => { /* 同上 */ };
      
      axios.interceptors.response.use((response) => {
        response.data = toCamelCase(response.data);
        return response;
      });
      
  2. 数据库字段严格要求 snake_case

    • 有些公司数据库规范是 snake_case,直接转换可能会影响 ORM 的映射,造成数据一致性问题

🎯 结论

  • 前端主要用 JS/TS 建议后端返回 camelCase,减少前端转换成本。
  • 后端主要是 Python/Go 建议保持 snake_case,前端做转换。
  • 团队统一风格最重要,如果后端已经全部 snake_case,前端可以通过 axios 统一转换。

http://www.kler.cn/a/600607.html

相关文章:

  • CUDA 学习(3)——CUDA 初步实践
  • 基于Flask的通用登录注册模块,并代理跳转到目标网址
  • ANYmal Parkour: Learning Agile Navigation for Quadrupedal Robots
  • 投sci论文自己查重方法
  • wordpress主题开发框架(灵狐框架),开发文档使用教程
  • 在K8S中使用ArgoCD做持续部署
  • 云原生CI/CD | Argo CD 详细介绍 (一)
  • 在本地Windows机器加载大模型并生成内容
  • Thales靶机攻略
  • HTB 笔记 | SQL 注入基础 + 实操小练习 P2
  • 【从零实现Json-Rpc框架】- 第三方库介绍 - fature篇
  • vue2拦截器 拦截后端返回的数据,并判断是否需要登录
  • MCP协议生态重构AI开发范式:从工具碎片化到系统整合的革命性跨越
  • 【C++11】智能指针:std::shared_ptr
  • MySQL基础语法
  • 文字也能生成视频?【蓝耘实践】:通义万相2.1文生视频
  • cursor安装
  • 生成式媒介革命已至,搜索如何借力DeepSeek破局?
  • DeepSeek加持Excel,探索办公自动化的无限可能
  • Deepseek API+Python 测试用例一键生成与导出 V1.0.3