開發中后端返回下劃線數據,要不要統一轉駝峰?

先說結論。看情況!!!!

  • 前端 主要用 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.pswp.cn/diannao/75828.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/75828.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/75828.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

docker pull時報錯:https://registry-1.docker.io/v2/

原文:https://www.cnblogs.com/sdgtxuyong/p/18647915 https://www.cnblogs.com/OneSeting/p/18532166 docker 換源,解決連接不上的問題。 編輯以下文件,不存在則創建: vim /etc/docker/daemon.json {"registry-mirrors&qu…

Pytorch學習筆記(十二)Learning PyTorch - NLP from Scratch

這篇博客瞄準的是 pytorch 官方教程中 Learning PyTorch 章節的 NLP from Scratch 部分。 官網鏈接:https://pytorch.org/tutorials/intermediate/nlp_from_scratch_index.html 完整網盤鏈接: https://pan.baidu.com/s/1L9PVZ-KRDGVER-AJnXOvlQ?pwdaa2m 提取碼: …

基礎算法02——冒泡排序(Bubble Sort)

冒泡排序(Bubble Sort) 冒泡排序:是一種簡單的排序算法,其基本思想是通過重復遍歷要排序的列表,比較相鄰的元素,并在必要時(即前面的數比后面的數大的時候)交換它們的位置&#xff…

RestTemplate遠程調用接口方式

1.Post(body空參) 也就是說需要給一個空的json 代碼: String getDeviceUrl this.MOVABLE_URL "detected-data/getMachineLists"; // 遠程調用 RestTemplate restTemplate new RestTemplate(); restTemplate.getMessageConverters().set(1,new StringHttpMessageC…

ar頭顯和眼鏡圖像特效處理

使用一個線程從攝像頭或者其他設備循環讀取圖像數據寫入鏈表,另一個線程從鏈表循環讀取數據并做相應的特效處理,由于寫入的速度比讀取的快,最終必然會因為寫入過快導致線程讀寫一幀而引發沖突和數據幀正常數據幀被覆蓋。最好使用共享內存&…

mysql--socket報錯

錯誤原因分析 MySQL 服務未運行(最常見原因) 錯誤中的 (2) 表示 “No such file or directory”,即 /tmp/mysql.sock 不存在這通常意味著 MySQL 服務器根本沒有啟動 socket 文件路徑不匹配 客戶端嘗試連接 /tmp/mysql.sock但 MySQL 服務器可…

labview加載matlab數據時報錯提示:對象引用句柄無效。

1. labview報錯提示 labview加載mat數據時報錯提示:對象引用句柄無效。返回該引用句柄的節點可能遇到錯誤,并沒有返回有效的引用句柄。該引用句柄所指的存儲可能在執行調用之前已關閉。報錯提示如下: 這是由于labview缺少matlab MathWorks導…

面試計算機操作系統解析(一中)

判斷 1. 一般來說,先進先出頁面置換算法比最近最少使用頁面置換算法有較少的缺頁率。(?) 正確答案:錯誤解釋:FIFO(先進先出)頁面置換算法可能導致“Belady異常”,即頁面數增加反而…

如何防御TCP洪泛攻擊

TCP洪泛攻擊(TCP Flood Attack)是一種常見的分布式拒絕服務(DDoS)攻擊手段,以下是其原理、攻擊方式和危害的詳細介紹: 定義與原理 TCP洪泛攻擊利用了TCP協議的三次握手過程。在正常的TCP連接建立過程中&a…

20250330 Pyflink with Paimon

1. 數據湖 2. 本地安裝Pyflink和Paimon 必須安裝Python 3.11 Pip install python -m pip install apache-flink1.20.1 需要手動加入這兩個jar 測試代碼: import argparse import logging import sys import timefrom pyflink.common import Row from pyflink.tab…

-PHP 應用SQL 盲注布爾回顯延時判斷報錯處理增刪改查方式

#PHP-MYSQL-SQL 操作 - 增刪改查 1 、功能:數據查詢(對數據感興趣) 查詢: SELECT * FROM news where id$id 2 、功能:新增用戶,添加新聞等(對操作的結果感興趣) 增加: INSERT INT…

【學習記錄】大模型微調之使用 LLaMA-Factory 微調 Qwen系列大模型,可以用自己的數據訓練

一、LoRA微調的基本原理 1、基本概念 LoRA(Low-Rank Adaptation)是一種用于大模型微調的技術,通過引入低秩矩陣來減少微調時的參數量。在預訓練的模型中,LoRA通過添加兩個小矩陣B和A來近似原始的大矩陣ΔW,從而減少需…

Vue 使用 xlsx 插件導出 excel 文件

安裝與引入 安裝 npm install xlsx npm install file-saver # 或者 yarn add xlsx yarn add file-saver 引入 import * as XLSX from xlsx; import FileSaver from file-saver 基本功能 讀取 Excel 文件 // 讀取文件內容 const workbook XLSX.readFile(path/to/file.xl…

vulntarget_a 訓練筆記

win 7 權限 利用任意文件上傳 getshell POST /module/ueditor/php/action_upload.php?actionuploadfile HTTP/1.1 User-Agent: Mozilla/5.0 (compatible; Baiduspider/2.0; http://www.baidu.com/search/spider.html) Accept: */* Accept-Language: zh-CN,zh;q0.9 Connectio…

無人機螺旋槳平衡標準

螺旋槳平衡是確保無人機(UAV)平穩運行、可靠性和使用壽命的關鍵過程。螺旋槳的不平衡會導致振動、噪音,并加速關鍵部件的磨損,從而對飛行性能產生負面影響。 ISO 21940-11:2016標準為旋翼平衡提供了一個廣泛引用的框架,定義了可接受的不平衡…

既生瑜何生亮?Nginx RTMP 模塊與 SRS RTMP服務器技術對比

在實時視頻流的場景中,RTMP 協議作為一種傳統且高效的流媒體傳輸協議,廣泛應用于各類直播和點播系統。兩款流行的開源 RTMP 服務器分別是基于 Nginx 的 Nginx RTMP 模塊 和 SRS(Simple Real-Time Server)。這兩者都在流媒體行業有…

MATLAB 批量移動 TIF 文件至分類文件夾

文章目錄 前言一、步驟二、代碼 前言 本代碼用于從指定的源文件夾 (sourceFolder) 中篩選所有 .tif 文件,并根據文件名的特定關鍵詞(Daynight 和 FDI)將其分類移動到相應的目標文件夾 (targetDaynightFolder 和 targetFDIFolder)。 一、步驟…

重溫Ubuntu 24.04 LTS

用戶調整 # 創建新用戶 sudo adduser newusername # 設置新用戶的密碼 sudo passwd newusername # 將新用戶添加到 sudo 組 sudo usermod -aG sudo newusername # 修改ssh訪問權限 sudo nano /etc/ssh/sshd_config # 將新用戶加入,此時root將無法訪問 AllowUsers n…

AWS Lambda 集成更新詳解:打造無縫云函數體驗

引言 AWS Lambda 作為一種無服務器計算服務,讓開發者能夠運行代碼而無需配置或管理服務器。隨著 AWS 不斷優化其服務,Lambda 的集成方式也在不斷更新和改進。本文將深入探討 Lambda 的最新集成選項,幫助您充分利用這一強大的無服務器計算平臺。 Lambda 集成類型概述 從圖…

基于Kubernetes部署Prometheus監控平臺

#作者:stackofumbrella 文章目錄 prometheus和k8s集群版本對照表架構Prometheus Operator簡介kube-prometheus下載地址 安裝修改鏡像地址修改Prometheus的service修改Grafana的service修改Alertmanager的service數據持久化執行安裝 Prometheus驗證Grafana驗證解決C…