都可以寫好后端接口

在后端工程師的日常開發中,我們都曾想過 怎么設計一個良好的接口呢?需要考慮的點有哪些。來 給您。

1、請求參數校驗

這個是大家都能想到的,也是一個良好的接口必備的前提條件,通過入參的校驗我們可以過濾掉許多無效的請求,提高系統的穩定性。

我們可以將入參合法性校驗分為: 「常規性校驗」「業務校驗」;

所謂的常規性校驗包括:token校驗、必填校驗、長度校驗、類型校驗等等;

業務校驗也就是特定業務場景下的校驗:比如用戶商品下單接口,那么下單金額一定要大于0;

2、版本迭代

實際過程中 肯定有需要對版本進行升級的需求,而提前設計好版本,可以避免因為升級導致舊的服務無法正常工作,我們要保證在升級的時候,新舊版本的服務都能正常運轉。

多版本控制現在比較常見的方式有:url標識版本, header標識版本, params標識版本3種方式。

3、訪問限制

在設計接口的時候,我們要考慮好,哪些是 游客接口,哪些是 登錄接口。
在訪問 登錄接口的時候,我們要做好 驗證工作。
比如說 請求頭帶上這個token請求接口,后端通過攔截器攔截該接口,做校驗看redis是否存在該key,如果不存在直接返回,用戶未登陸!

4、防抖處理

目的是防止重復數據的產生,比如新增接口,用戶快速點擊兩次,如果沒做防重,就會產生重復數據。

5、考慮冪等性

所謂冪等: 「多次調用方法或者接口不會改變業務狀態,可以保證重復調用的結果和單次調用的結果一致」

我們在開發中主要操作也就是CURD,其中讀取操作和刪除操作是天然冪等的,我們所關心的就是創建操作、更新操作。

比如請求多次,只有第一次請求才會做數據處理,后面的請求不會產生數據改變,例如退款接口,第一次退款成功后,后面的請求,不會再次退款成功。

6、提高響應時間

這是一個 用戶體驗 的指標,因為涉及的方面很多,所以是一個復雜的操作。

7、限流控制

限流是為了更好的維護 系統穩定性。
如果說我們把接口提供出來給第三方系統用,那么這個時候接口的限流是非常有必要的。

一方面,限流可以防止接口被刷,造成不必要的服務層壓力,另一方面,是為了防止接口被濫用。

可以使用 redis進行接口調用次數統計,ip+接口地址作為key,訪問次數作為value,每次請求value+1,設置過期時長來限制接口的調用頻率。

8、IP黑名單

ip黑名單是 設置不讓訪問服務的ip,進而對 惡意訪問 做一個控制。

9、數據脫敏

數據庫中的一些敏感字段比如:身份證號銀行卡號地址手機號等等,是需要做脫敏處理。
比如手機號15912345678脫敏后顯示159****5678。

10、接口訪問日志

關鍵的 接口一定要有日志,入參日志出參日志異常日志
這樣一旦出現問題,我們可以通過查看日志一下子定位問題所在。

11、統一 響應格式

在定義接口時需要返回 統一格式的 響應體。
響應數據會包含三個屬性: `

  • 狀態碼(code)
  • 信息描述(message)
  • 響應數據(data)

客戶端可以根據**「狀態碼」**知道接口請求是否成功,如果成功則開始處理數據,如果失敗則直接拋出message信息。

12、職責單一清晰

一個接口只做一件事,是那些開發過大項目的小竅訣。

13、配備一份好的 接口文檔

優秀的產品,需要一份優秀的說明書。提供一份良好完整的api文檔 是很有必要的。
其中包括提供一些請求示例,這樣用戶在使用的時候才會更加清楚,也能避免一些錯誤的請求。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/22278.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/22278.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/22278.shtml

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

相關文章

零基礎學Java第二十七天之前端-HTML5詳解

前端-HTML5詳解 一、概述 HTML5是HTML的第五個版本,它對HTML進行了許多改進和擴展,使得網頁開發更加豐富和便利。HTML5是Web標準的重要組成部分,旨在提高瀏覽器兼容性,統一網頁開發標準。HTML5不僅包括了HTML的基本元素和標簽&am…

前端js解析websocket推送的gzip壓縮json的Blob數據

主要依賴插件pako https://www.npmjs.com/package/pako 1、安裝 npm install pako 2、使用, pako.inflate(reader.result, {to: "string"}) 解壓后的string 對象,需要JSON.parse轉成json this.ws.onmessage (evt) > {console.log("…

vue使用html2canvas截圖下載時,存在svg或者img時截圖不全的解決辦法

使用html2canvas進行div截圖時,存在svg和img的解決辦法 寫在前面:vue使用html2canvas截圖時,存在svg或者img時截圖時空白,或者不全解決辦法如下第一步,svg或者img先轉base64第二步,將轉換后的base64設置為新…

電源小白入門學習10——浪涌、防浪涌器件、浪涌保護芯片

浪涌、防浪涌器件、浪涌保護芯片 浪涌浪涌保護器件的分類與原理保險絲TVS二極管新防護電路 浪涌 浪涌,相信不少學習過電子的同學或多或少都通過這個詞,但是到底什么是浪涌呢,GPT給我的答案是這樣的: 浪涌,也稱為瞬態…

【雜記-IDS入侵檢測系統、IPS入侵防御系統】

一、IDS概述、分類 IDS概述 IDS,intrusion detection system,入侵檢測系統,其對網絡傳輸進行即時監視,在發現可疑傳輸時發出警報或者采取主動反應措施的網絡安全設備,是一種積極主動的安全防護技術。與防火墻不同的是…

【深度學習】【機器學習】支持向量機,網絡入侵檢測,KDD數據集

文章目錄 環境加載數據歸一化數據訓練模型用測試數據集給出評估指標準確率召回率預測某個輸入數據隨便取一行數據加載訓練好的SVM支持向量機模型并預測 全部數據和代碼下載 環境 之前介紹過用深度學習做入侵檢測,這篇用向量機。 環境Python3.10 requirements.txt…

【miniconda】安裝miniconda

☆ 問題描述 ubuntu環境下安裝miniconda ★ 解決方案 ubuntu環境下安裝miniconda 下載miniconda 包 miniconda官網地址:https://docs.conda.io/en/latest/miniconda.html 清華大學鏡像地址: https://mirrors.tuna.tsinghua.edu.cn/anaconda/minicon…

超級加速器鏈接促進會(UALink)能否打破英偉達的壟斷?

近年來,人工智能(AI)技術的飛速發展催生了對高性能計算和數據中心互聯技術的巨大需求。然而,隨著市場的集中化,英偉達憑借其專有的NVLink和InfiniBand技術,幾乎壟斷了這一市場。這種局面引起了其他科技巨頭…

Python的空格之謎:深度剖析空格在Python編程中的重要作用

Python的空格之謎:深度剖析空格在Python編程中的重要作用 在Python的世界里,空格并不僅僅是一個簡單的空白字符,它承載著編程語法和邏輯的重要使命。對于初學者來說,Python的空格規則可能是一個令人困惑的難題,但一旦…

MFC實現子控件focus焦點上下移動父控件ListView和Gridview也跟著向上下移動

項目中要實現mfc功能,然后子空間焦點下移,LIstView和Gridview父空間不會下移,所以就有這個文章。廢話不多說直接上代碼。 MFCGridView.java import android.content.Context; import android.util.AttributeSet; import android.view.View;…

白酒:產地的釀酒歷史與文化遺產

云倉酒莊豪邁白酒作為中國釀酒工藝的品牌之一,其產地的釀酒歷史與文化遺產具有深遠的意義和價值。產地釀酒歷史悠久,代代相傳的釀酒技藝和與眾不同的文化傳統,構成了云倉酒莊豪邁白酒與眾不同的品質和風味。 據云倉酒莊豪邁介紹,中…

力扣----輪轉數組

題目鏈接:189. 輪轉數組 - 力扣(LeetCode) 思路一 我們可以在進行每次輪轉的時候,先將數組的最后一個數據的值存儲起來,接著將數組中前n-1個數據依次向后移,最后將存儲起來的值賦給數組中的第一個數據。 …

Pixi繪制地圖和小車

之前已經用Pixi繪制出了各種圖形以及通過圖片繪制精靈,這節用pixi繪制網格地圖,并通過圖片制作一個Sprite,讓這個Sprite在網格地圖上運動。首先需要在頁面中添加一個div用來后期展示canvas的畫布,并將此div實例化為PIXI的Applicat…

python繪制雙變量熱力等級圖

參考資料: https://github.com/mikhailsirenko/bivariate-choropleth/blob/main/bivariate-choropleth.ipynb Bivariate choropleth map using Plotly Matplotlib雙變量熱力等級圖 代碼: import pandas as pd import geopandas as gpd import numpy a…

企業轉型必上的監控系統智能管家大屏UI前端開發

企業轉型必上的監控系統智能管家大屏UI前端開發

Istio安裝記錄

環境介紹 我使用的是k8s 1.23.3版本 istio使用的是istio-1.13.3-linux-amd64.tar.gz 把文件下載k8s集群下,解壓 tar -vzxf istio-1.13.3-linux-amd64.tar.gz然后設置環境變量 [rootmaster istio]# cat /etc/profile export ISTIO_HOME/root/istio-1.13.3 expor…

3067. 在帶權樹網絡中統計可連接服務器對數目 Medium

給你一棵無根帶權樹,樹中總共有 n 個節點,分別表示 n 個服務器,服務器從 0 到 n - 1 編號。同時給你一個數組 edges ,其中 edges[i] [ai, bi, weighti] 表示節點 ai 和 bi 之間有一條雙向邊,邊的權值為 weighti 。再給…

Yolo-v5模型訓練速度,與GeForce的AI算力描述

1.GeForce RTX3070 Ti官網參數: GeForce RTXTM 3070 Ti 和 RTX 3070 顯卡采用第 2 代 NVIDIA RTX 架構 - NVIDIA Ampere 架構。該系列產品搭載專用的第 2 代 RT Core ,第 3 代 Tensor Core、全新的 SM 多單元流處理器以及高速顯存,助您在高性…

【網絡安全的神秘世界】MySQL

🌝博客主頁:泥菩薩 💖專欄:Linux探索之旅 | 網絡安全的神秘世界 | 專接本 MySQL MySQL 教程 | 菜鳥教程 (runoob.com) 什么是數據庫 數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫 在do…

二手筆記本怎么買

用途: 1.給爹媽用來簡單辦公,只是用office基礎辦公軟件,無出差無游戲無畫圖需求。 預算: 1000以內 以下是電腦對比選項: 屏幕大小-> 目前市面上的尺寸對比,以A4紙說明,13.3寸14.1寸15.6…