<tr id="tp1vn"><td id="tp1vn"><dl id="tp1vn"></dl></td></tr>
  1. <p id="tp1vn"></p>
  2. <sub id="tp1vn"><p id="tp1vn"></p></sub>
    <u id="tp1vn"><rp id="tp1vn"></rp></u>
    <meter id="tp1vn"></meter>
      <wbr id="tp1vn"><sup id="tp1vn"></sup></wbr>
      日韩第一页浮力,欧美a在线,中文字幕无码乱码人妻系列蜜桃 ,国产成人精品三级麻豆,国产男女爽爽爽免费视频,中文字幕国产精品av,两个人日本www免费版,国产v精品成人免费视频71pao
      網易首頁 > 網易號 > 正文 申請入駐

      你寫的每一個爛表單,都是因為校驗順序搞反了

      0
      分享至

      從空值攔截到數據庫查重,五層校驗架構揭示了數據過濾的黃金法則——成本越低的檢查越應前置。本文將拆解這套源于數據庫優化思想的校驗范式,揭示前端與后端校驗的協同策略,以及如何用一張矩陣表徹底解決開發與測試的溝通難題。

      ———— / BEGIN / ————

      上周review代碼,后端同事寫了個新增數據的接口。我點開一看,校驗邏輯大概是這么個畫風:

      先查數據庫看有沒有重復記錄,再校驗字段格式,最后才判斷必填項有沒有傳。

      我說兄弟,用戶連商品名都沒填呢,你就去查庫了?數據庫它也是有感情的好吧。

      他愣了一下:”這有啥區別嗎?反正最后都會報錯。”

      區別大了。校驗能不能攔住臟數據是及格線,校驗的順序才是你設計水平的分界線。

      這事讓我想起之前踩過的一個坑。

      我們系統有個”新增周度數據”的表單——商品、企業、省份、周產量、周庫存、價格、成本、毛利,十幾個字段。剛上線那會兒,校驗邏輯是前端同事”憑感覺”寫的,想到哪驗到哪。

      結果呢,用戶填了個負數的價格,系統沒攔住,直接跑去做毛利計算了。算出來一個離譜的毛利率,存進了數據庫。下游的價格分析模塊一讀這條數據——Loss預測直接飛了,分析師第二天跑來問我們”這個品種是不是出bug了”。

      查了半天,就是因為范圍校驗被放在了關聯計算的后面。價格是負數這件事,本來在第三層就該攔住的,結果漏到了第四層,還引發了連鎖反應。

      一個校驗放錯位置,鏈路上所有下游都跟著遭殃。

      這事之后我就開始琢磨:表單校驗這東西,到底有沒有一套通用的、穩定的設計范式?

      還真有。而且特別樸素。

      五層過濾,越便宜的檢查越先跑

      我后來把校驗邏輯梳理成了五層。不是我發明的,你去看任何一個成熟框架的參數校驗,底層邏輯都是這個:

      L1 — 存在性:傳沒傳?

      最便宜的檢查。字段是不是null、空字符串、undefined。帶星號的必填項,這一層全覆蓋。用戶點提交,先掃一遍,沒填的直接標紅,后面全部跳過。

      為什么放第一層?因為一個空值,你去做格式校驗沒意義,做范圍校驗更沒意義。就好比你拿到一個null去調.length(),不是校驗失敗的問題,是直接NPE給你看。

      L2 — 格式類型:像不像?

      字段有值了,看看這個值的”形狀”對不對。周產量填了”哈哈哈”——類型不對。日期字段收到一個”2026-13-45″——格式非法。郵箱沒有@符號。手機號混進了字母。

      這一層本質上是做類型轉換前的門衛。過了這關,后面的邏輯才能拿到一個”至少類型是對的”的值去做進一步判斷。

      很多前端框架(Ant Design的Form、Element的el-form)自帶的validator其實就管到這一層。但光靠這層遠遠不夠。

      L3 — 范圍邊界:合不合理?

      格式對了不代表值是合理的。價格不能為負數。庫存不能是-500萬噸。年度不能填2099年。百分比字段不能出現200%。

      這一層過濾的是”格式正確但業務上離譜”的數據。我管這叫”合法的垃圾”——類型系統認它,業務邏輯不認它。

      經常被忽略的一個細節:小數精度也屬于這一層。價格保留兩位小數,你傳進來一個3.14159,后面計算會不會出精度漂移?該在這里就truncate或者round掉。

      L4 — 關聯邏輯:字段之間自洽嗎?

      單字段都合法了,但字段之間可能打架。

      毛利 = (價格 – 成本) / 價格。這三個字段之間有硬約束。用戶手動填了毛利和價格,但填的成本算出來對不上——這就是跨字段邏輯校驗該干的活。

      還有一類更隱蔽的:條件必填。比如選了某個商品工藝之后,產量單位的可選范圍要聯動變化。選了”省份”之后,”企業”的下拉列表要跟著過濾。

      這一層的成本比前三層高不少,因為你要同時拿到多個字段的值做交叉判斷。所以它排在第四。

      L5 — 全局外部:跟系統里已有的數據沖突嗎?

      最貴的一層。要查庫。

      同一個”商品 + 企業 + 省份 + 周度時間”的組合,不能重復錄入。這個判斷必須發請求到后端,后端去數據庫里跑一條select。網絡IO + 數據庫查詢,這是整個校驗鏈路里成本最高的操作。

      所以放在最后。只有前面四層全部pass了,才值得發這一趟請求。

      你想想,如果把L5放在L1前面會怎樣?用戶連必填項都沒填全,你就發了一次數據庫查詢。并發高一點,這種無效查詢能把你的DB連接池吃得干干凈凈。

      本質就是個短路求值。任何一層掛了,后面不跑。這不是什么高深的設計模式,就是最樸素的成本排序——選擇性高、代價低的條件先執行。

      你去看數據庫查詢優化器選執行計劃的邏輯,一模一樣的思路。MySQL決定先走哪個索引、先過濾哪個條件,背后也是這套”便宜的先來”。

      這套思路不只管表單

      你再想遠一點。

      API接口參數校驗,是不是同一套?收到請求 → 必傳參數在不在 → 類型對不對 → 值域合不合理 → 參數間邏輯(start_date < end_date)→ 權限校驗(查Redis/查DB)。任何一個成熟的API框架,中間件鏈的排列順序就是按這個來的。

      ETL數據清洗,也是。拿到一批CSV → 空行刪掉 → 格式統一(日期轉ISO、數字去逗號)→ 異常值過濾(價格為負的行剔除)→ 跨字段一致性校驗 → 跟主表去重。你要是把去重放在第一步,幾百萬條數據先全量join一遍,跑到天荒地老。

      甚至代碼review的時候,你看一個PR,下意識的掃描順序也是:這個改動有沒有(L1,別是個空PR)→ 改的對不對地方(L2,文件和模塊對不對)→ 改動幅度合不合理(L3,是不是改了不該改的)→ 跟其他模塊有沒有沖突(L4)→ CI跑過沒有(L5,外部驗證)。

      同一套模型,不同的皮膚。

      落地的時候,一張表搞定

      回到實際工作。我現在寫PRD里的表單需求,直接用一張校驗規則矩陣表跟開發對齊:


      比在PRD里寫一大段”當用戶輸入價格時,系統應判斷價格是否為空,如果為空則提示……如果不為空則繼續判斷格式……”清楚十倍。開發拿到這張表,每個字段每一層該干嘛,一目了然,不用反復對齊。

      測試同事也愛這張表。寫測試用例的時候,每一層就是一組case。L1的case:每個必填字段分別傳空。L2的case:每個字段分別傳非法格式。這么列下來,漏測的概率小很多。

      前端校驗和后端校驗的關系

      順便說一個容易吵架的點。

      前端該不該做校驗?當然該做。用戶體驗好,即時反饋,不用等網絡往返。

      但前端校驗能不能當安全防線?不能。因為前端校驗可以被繞過——隨便開個Postman直接打接口,你的前端校驗跟沒有一樣。

      所以正確的做法是:前端做L1到L4,體驗層面攔一道。后端L1到L5全部重跑一遍,這是安全兜底。 L5本來就要查庫,只能在后端做。

      別覺得后端重復跑一遍是浪費。安全領域有個原則叫”縱深防御”——不是一道墻夠高就行,是多道墻疊在一起,每道都有可能攔住一類攻擊。校驗也是一樣。

      有些團隊為了省事,前端做了校驗后端就不做了。我只能說,等哪天被人用腳本往你接口里灌臟數據的時候,你就知道這個偷懶有多貴了。

      說到底,校驗設計這件事沒有什么花活。就一條原則:

      先做便宜的判斷,再做貴的判斷。先用本地信息,再用外部信息。先查格式,再查語義。

      把這條刻進DNA里,不管是寫表單、設計API、搭數據管道還是做消息消費,你的校驗邏輯都不會太離譜。

      至于那個把查庫放在第一步的同事——他后來重構了。現在那段代碼的注釋寫著:

      “L1→L5,別改順序。改了請客。”

      本文來自公眾號:尤里卡高 作者:尤里卡高

      特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

      Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

      相關推薦
      熱點推薦
      民營醫院“倒閉潮”:一場遲到的“虛胖”清算

      民營醫院“倒閉潮”:一場遲到的“虛胖”清算

      識局Insight
      2026-05-23 13:32:42
      趙露思泰國演唱會各種大尺度,公然表演“胸震”,為曝光度無底線

      趙露思泰國演唱會各種大尺度,公然表演“胸震”,為曝光度無底線

      花哥扒娛樂
      2026-05-22 20:17:55
      伊朗媒體稱巴基斯坦陸軍參謀長已前往伊朗 將與伊朗高級官員會面

      伊朗媒體稱巴基斯坦陸軍參謀長已前往伊朗 將與伊朗高級官員會面

      新京報
      2026-05-22 20:48:25
      身上的紅痣越來越多,是為何?醫生再三提醒:建議排查這幾種疾病

      身上的紅痣越來越多,是為何?醫生再三提醒:建議排查這幾種疾病

      蜉蝣說
      2026-05-22 20:20:49
      小米YU7 GT上市涌現轉單潮:商家稱下單可返現5000元,“廢單激活”成車商牟利工具

      小米YU7 GT上市涌現轉單潮:商家稱下單可返現5000元,“廢單激活”成車商牟利工具

      新浪財經
      2026-05-23 07:06:21
      “必須嚴查!”近日報道,江蘇南京,25歲女孩因私處腫痛就醫

      “必須嚴查!”近日報道,江蘇南京,25歲女孩因私處腫痛就醫

      周哥一影視
      2026-05-22 01:38:24
      吳石就義前,獄友低聲吐露:蔡孝乾叛變不是怕死,是因為一女人

      吳石就義前,獄友低聲吐露:蔡孝乾叛變不是怕死,是因為一女人

      人生錄
      2026-05-23 13:25:11
      張藝謀沒想到,《主角》請9位陜西人壓陣,風頭卻被3個外地人搶走

      張藝謀沒想到,《主角》請9位陜西人壓陣,風頭卻被3個外地人搶走

      白面書誏
      2026-05-16 20:18:12
      007新游導演回應情色內容:宣傳片里已經藏了

      007新游導演回應情色內容:宣傳片里已經藏了

      山月不知2
      2026-05-21 14:24:57
      雷軍豪言“再次挑戰特斯拉”:花23萬買YU7,還是26萬買Model Y?

      雷軍豪言“再次挑戰特斯拉”:花23萬買YU7,還是26萬買Model Y?

      沙雕小琳琳
      2026-05-22 23:22:15
      馮德萊恩沒想到,加稅50%還沒有落地,中國就用歐盟的方式反制歐

      馮德萊恩沒想到,加稅50%還沒有落地,中國就用歐盟的方式反制歐

      小嵩
      2026-05-23 14:28:19
      馬筱梅兒子的保姆曝光,看起來比小楊阿姨沉穩,小楊阿姨變化真大

      馬筱梅兒子的保姆曝光,看起來比小楊阿姨沉穩,小楊阿姨變化真大

      甜檸檬吖
      2026-05-22 14:36:41
      4.9億“養老本”蒸發:北京江山老年公寓爆雷

      4.9億“養老本”蒸發:北京江山老年公寓爆雷

      新浪財經
      2026-05-22 18:13:16
      心理學上有個詞叫:逆火效應(永遠不要指出你身邊人的任何問題,包括你的親戚朋友。成年人的最大清醒就是不介入他人的生活)

      心理學上有個詞叫:逆火效應(永遠不要指出你身邊人的任何問題,包括你的親戚朋友。成年人的最大清醒就是不介入他人的生活)

      德魯克博雅管理
      2026-05-18 17:11:20
      厄爾尼諾推升高溫可能,今夏全國最高用電負荷或達16億千瓦,較去年“相當于多出一個河南省”

      厄爾尼諾推升高溫可能,今夏全國最高用電負荷或達16億千瓦,較去年“相當于多出一個河南省”

      每日經濟新聞
      2026-05-23 16:09:43
      解放新疆后,王震打開監獄,對一囚犯說:總指揮你來當,我當副手

      解放新疆后,王震打開監獄,對一囚犯說:總指揮你來當,我當副手

      浩渺青史
      2026-04-27 01:51:55
      八卦博主:維尼修斯恢復單身后,被曝在波多黎各私會幾名女性

      八卦博主:維尼修斯恢復單身后,被曝在波多黎各私會幾名女性

      懂球帝
      2026-05-23 11:46:25
      炸裂五隊大交易!火箭送出五將+兩首輪,組建超級沖冠陣容

      炸裂五隊大交易!火箭送出五將+兩首輪,組建超級沖冠陣容

      體育見習官
      2026-05-23 09:42:35
      北京被淘汰揪出四大罪人:許利民排第2:趙睿輸球后竟還笑得出來

      北京被淘汰揪出四大罪人:許利民排第2:趙睿輸球后竟還笑得出來

      籃球快餐車
      2026-05-23 02:23:49
      女同事離職前將她的奔馳8萬賣我,回家打開后備箱后,我直接愣住

      女同事離職前將她的奔馳8萬賣我,回家打開后備箱后,我直接愣住

      千秋文化
      2026-05-21 19:54:50
      2026-05-23 22:52:49
      人人都是產品經理社區 incentive-icons
      人人都是產品經理社區
      想要成為大牛先從學做產品開始
      64744文章數 311618關注度
      往期回顧 全部

      科技要聞

      爆炸聲中又邁一步!拆解馬斯克“十二飛”

      頭條要聞

      煤礦事故致90死 專家:瓦斯爆炸幾乎不存在黃金救援期

      頭條要聞

      煤礦事故致90死 專家:瓦斯爆炸幾乎不存在黃金救援期

      體育要聞

      少年意氣,正在改變中國足球

      娛樂要聞

      《浪姐7》三公,王濛贏麻了,張月實慘

      財經要聞

      股價暴跌!富途老虎是什么來頭?

      汽車要聞

      油耗降一半/HEV核心部件終身質保 長安藍鯨超擎雙車上市

      態度原創

      藝術
      游戲
      旅游
      本地
      公開課

      藝術要聞

      76米!“特朗普拱門”設計方案通過

      沒有代餐的動作爽游,戰雙要把自己做到極致

      旅游要聞

      與輝同行山東行|有山則立,有海則遠。山東,山海相擁,氣韻天成

      本地新聞

      用云錦的方式,打開江蘇南京

      公開課

      李玫瑾:為什么性格比能力更重要?

      無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 一级毛片网| 99re热精品视频中文字幕不卡| 亚洲精品综合在线影院| 亚洲av中文一区二区| 国产精品99精品无码视亚| 国产免费无码9191精品| 亚洲国产成人无码电影| 色综合久久精品中文字幕| 老头和老头交∫配| 色五月丁香六月欧美综合| 亚洲图揄拍自拍另类图片| 色欲久久人妻内射| 7777久久亚洲中文字幕| 人妻aⅴ久久久北条麻妃| 天堂色综合| 人妻被按摩到潮喷中文字幕| 久久国内偷拍综合视频| 欧美成人精品一区二区| 国产乱人伦偷精品视频 | 日韩精品一二三四五区| 午夜A理论片在线播放| 亚洲中文字幕综合网址| 激情综合网激情综合| 日韩精品卡1卡2日韩在线| 亚洲综合自拍一区| L日韩欧美看国产日韩欧美| 亚洲丶国产丶欧美一区二区三区 | 中文字幕精品无码一区二区| 国产精品毛片无码久久| 国产精品videossex久久发布| 亚洲第一区av| 免费看国产曰批40分钟| 日韩无码AV一区二区| 国产微拍一区二区三区四区| 久久亚洲精品成人无码网站夜色| 成人网站国产在线视频内射视频| 玩弄丰满少妇人妻视频| 性色av无码久久一区二区三区| 国产三级在线视频观看| 一级毛片免费不卡在线视频 | 欧美中文字幕精品人妻|