<ruby id="9ue20"></ruby>

  1. 
    

      国产午夜福利免费入口,国产日韩综合av在线,精品久久人人妻人人做精品,蜜臀av一区二区三区精品,亚洲欧美中文日韩在线v日本,人妻av中文字幕无码专区 ,亚洲精品国产av一区二区,久久精品国产清自在天天线
      網易首頁 > 網易號 > 正文 申請入駐

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

      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.

      相關推薦
      熱點推薦
      難以置信!一幼師在周末化妝,被家長指責:你都把我家孩子帶壞了

      難以置信!一幼師在周末化妝,被家長指責:你都把我家孩子帶壞了

      火山詩話
      2026-05-10 08:12:56
      女婿正國級,兒子副國級,這位厲害母親給中國留下最寶貴遺產!

      女婿正國級,兒子副國級,這位厲害母親給中國留下最寶貴遺產!

      歸史
      2026-05-10 16:31:26
      東風導彈泄密案!間諜郭萬鈞一家三口,全部被處以死刑

      東風導彈泄密案!間諜郭萬鈞一家三口,全部被處以死刑

      番外行
      2026-03-31 08:28:28
      中方動真格后,西班牙立馬跟進,阻斷令一波接一波,27國圍剿美國

      中方動真格后,西班牙立馬跟進,阻斷令一波接一波,27國圍剿美國

      聊歷史的阿稼
      2026-05-09 19:00:51
      演都不演了!小玥兒開通賬號不到24小時,惡心的事發生,還不止一件

      演都不演了!小玥兒開通賬號不到24小時,惡心的事發生,還不止一件

      烈史
      2026-05-10 20:57:09
      特斯拉中國更新,FSD 自動駕駛真要來了!

      特斯拉中國更新,FSD 自動駕駛真要來了!

      XCiOS俱樂部
      2026-05-10 20:26:25
      周末紛紛投降了

      周末紛紛投降了

      新浪財經
      2026-05-10 17:09:53
      CCTV直播!國乒男團戰日本有點懸!女團奪冠穩了!倫敦世乒賽5月10日賽程出爐!

      CCTV直播!國乒男團戰日本有點懸!女團奪冠穩了!倫敦世乒賽5月10日賽程出爐!

      好乒乓
      2026-05-10 11:02:11
      從“傅媽”到清冷姐姐,傅首爾減肥后大變,她的面相討論重新定義

      從“傅媽”到清冷姐姐,傅首爾減肥后大變,她的面相討論重新定義

      悄悄史話
      2026-05-09 20:54:03
      胎壓2.5是謊言?干了十年汽修,我來告訴你真正的標準!

      胎壓2.5是謊言?干了十年汽修,我來告訴你真正的標準!

      娛樂圈的筆娛君
      2026-05-10 01:52:36
      發現一個現象:收入1萬以下的夫妻,吵架大都為了錢;1萬以上的家庭,吵架都是一方很強勢

      發現一個現象:收入1萬以下的夫妻,吵架大都為了錢;1萬以上的家庭,吵架都是一方很強勢

      二胡的歲月如歌
      2026-04-13 08:04:02
      蒯曼輸球不可怕,賽后清醒認知才令人擔憂

      蒯曼輸球不可怕,賽后清醒認知才令人擔憂

      老淸醫學科普
      2026-05-10 22:13:41
      乾隆皇帝包裹遺體的被子,拍出了1.3億天價,為何會如此值錢?

      乾隆皇帝包裹遺體的被子,拍出了1.3億天價,為何會如此值錢?

      興趣知識
      2026-05-08 00:40:30
      不怪跑圈混亂,這樣的女跑者,誰看著不迷糊?

      不怪跑圈混亂,這樣的女跑者,誰看著不迷糊?

      馬拉松跑步健身
      2026-05-10 17:12:33
      普京就菲佐乘專機前往俄羅斯的路線復雜開玩笑:“總比騎著馬來強”

      普京就菲佐乘專機前往俄羅斯的路線復雜開玩笑:“總比騎著馬來強”

      環球網資訊
      2026-05-09 21:53:23
      4年1.04億!回顧布倫森尼克斯生涯,隊史最佳簽約?

      4年1.04億!回顧布倫森尼克斯生涯,隊史最佳簽約?

      籃球實錄
      2026-05-10 00:26:37
      做好準備硬扛30年,和日本當年一模一樣,還清房貸經濟才有起色

      做好準備硬扛30年,和日本當年一模一樣,還清房貸經濟才有起色

      阿離家居
      2026-05-09 10:05:46
      楊鳴點出北京致命隱患!杜鋒徹底攤牌,3利好讓廣東看到晉級希望

      楊鳴點出北京致命隱患!杜鋒徹底攤牌,3利好讓廣東看到晉級希望

      后仰大風車
      2026-05-10 07:10:10
      預期要大漲方向?6大核心熱點周末發酵  這個方向資金已提前布局

      預期要大漲方向?6大核心熱點周末發酵 這個方向資金已提前布局

      元芳說投資
      2026-05-10 21:17:29
      “愛必享”糖果中檢出“偉哥”?上海市監局回應

      “愛必享”糖果中檢出“偉哥”?上海市監局回應

      閃電新聞
      2026-05-09 13:01:47
      2026-05-11 00:31:00
      人人都是產品經理社區 incentive-icons
      人人都是產品經理社區
      想要成為大牛先從學做產品開始
      64706文章數 311608關注度
      往期回顧 全部

      科技要聞

      DeepSeek融資,改寫所有人的估值

      頭條要聞

      兒子車禍受傷生存希望不足0.1% 母親請中醫熬"還魂湯"

      頭條要聞

      兒子車禍受傷生存希望不足0.1% 母親請中醫熬"還魂湯"

      體育要聞

      那個曾讓詹姆斯抱頭的兄弟,40歲從大學畢業了

      娛樂要聞

      趙露思老實人豁出去了 沒舞蹈天賦硬跳

      財經要聞

      白酒大逃殺

      汽車要聞

      軸距加長/智駕拉滿 阿維塔07L定位大五座SUV

      態度原創

      房產
      本地
      游戲
      手機
      公開課

      房產要聞

      低價甩賣!海口這個地標商業,無人接盤!

      本地新聞

      用蘇繡的方式,打開江西婺源

      《明末》官號復活!連發多條動態 網友感嘆擔憂

      手機要聞

      聯想拯救者手機Y70新一代現身Geekbench

      公開課

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

      無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 精品久久久久中文字幕无码油| 狠狠色噜噜狠狠狠狠米奇7777| 国产无遮挡真人免费视频| 国产成人精品无码免费看夜聊软件 | 一级二级三一片内射视频在线| 久草热8精品视频在线观看| 免费国产裸体美女视频全黄| 日本黄色电影网址| 国产色精品久久人妻| 国产精品va无码一区二区| 成人精品视频一区二区三区| 熟妇人妻中文字幕无码老熟妇| 在线看高清中文字幕一区| 亚洲精品国产精品乱码不卞2021 | 国产精品午夜av福利| 色欲色香天天天综合网站免费| 在线a人片免费观看| 熟女网址| 国产午夜精品理论大片| 亚洲无码一卡二卡三卡| 亚洲精品无码av中文字幕电影网站 | 久99精品视频免费视频免费观看| 精品久久久久久无码不卡| 亚洲一区二区中文字幕| 亚洲日韩操| 日韩人妻无码精品久久| 熟女一区二区中文在线| 免费看一区二区三区四区| 日韩人妻熟女中文字幕aⅴ春菜| 精品国产女同疯狂摩擦2| 国产免费高清69式视频在线观看 | 日韩wwww| 久久成人国产精品免费软件| 先锋影音男人av资源| 成人精品一区二区三区九色| 国产精品久久久久久一区二区三区| 人人妻人人做人人爽| 日本色88网站| 麻豆色漫| 日本一道高清一区二区三区| 亚洲夜夜欢一区二区三区|