日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

過去幾個月里,我一直在對付一個流行健身品牌的 API,最后發現自己陷入了一種卡夫卡式的噩夢。程序員都喜歡挑戰,優秀的程序員一定要征服種種挑戰。我一直覺得自己是一個非常優秀的程序員。因此,盡管每天晚上我都以失敗告終,只能上床睡覺,但我內心深處的某些東西是不會讓我就此放棄的——第二天早上,我會帶著新的想法和新的動力滿血復活。

這樣的循環已經持續幾個月,這就像一場夢,日復一日,遲遲沒有蘇醒的一刻。我要處理的任務很簡單:獲取數據,保存數據,完事。但面對這個 API,我被一堆脆弱的代碼團團圍住,追逐著那些我永遠都抓不到的錯誤。

那么,怎樣才能構建一個具備如此高技術障礙的 API,讓你可以擊敗一個擁有 20 年經驗,過去總有辦法走出困境的老手呢?你如何讓他慢慢抓狂,并讓他從自己所熱愛的這一職業中獲得的所有快樂一掃而空呢。好吧,我會告訴你訣竅的。

我們先來布置角斗場地。

對于授權需求,我們將使用 OAuth1a。當然,這是一個非常好的標準,但用它簽署請求會增加那么一點點復雜性,讓你永遠沒法搞清楚原來是簽署導致請求失敗的。

服務器到服務器的通信

我們不會響應你的 API 請求,而是給你回電。你請求服務器提供一些數據,然后在從現在到宇宙終結之前(或永遠不會)的某個時間點上,我們會做出回應。響應一般需要幾毫秒,但有時需要幾分鐘,在極少數情況下需要幾個小時。但最重要的是,如果我們沒有任何數據,我們根本就不會做出響應。不一致是程序員的天敵。

這種設置在實踐中意味著什么呢?這意味著你需要在服務器或代理后面設置一個端點。這也意味著在你的單元測試中,如果沒有響應,那么你將不得不做一些工作。你得編寫一些代碼,對其進行測試,如果失敗還要檢查你的 web 服務器日志。

但是,也許在你查看請求通過的那些日志時,它終于有反應了,只不過響應來得慢一些。不過當然 JSON 沒有按照你預期的方式格式化,所以請重來一遍吧。

禁止重復數據

這招可是很不錯的。不管你請求任何數據,你都只能請求恰好一次。不是一分鐘一次,也不是一小時或一天一次——是這輩子都只能請求那么一次。這實際上意味著任何單元測試都是不可重復的,想要重來一次?請手動注冊新帳戶并在里面人工填好數據。

假設當代碼生效時,一位用戶請求了某個時間段內的數據,他要的數據可能存在也可能不存在,你可能會,也可能不會收到這些數據,但你仍然需要跟蹤這一請求,因為如果你這個請求只重疊了那么區區一天,那么在將來某個時候,你就會收到一條錯誤消息。當生產環境中的請求失敗時會發生什么呢?當然沒有緩解措施,你什么都做不了。這些數據是不可恢復的——永遠別指望它能恢復了。

我可以用一整天談論這個技巧的強大力量。不過你只要簡單地想象一下,比如你編寫了自己的第一行代碼,然后又成功地執行了它,然后當你再次運行它時,它就沒有任何反應了。想象一下項目的其他部分全變成了這個樣子,那會是多么壯觀的場面。

開發和 QA 速率限制

我想你可能會爭辯說,將 QA 速率限制設置為遠低于生產環境的速率可能是有原因的。但如果將閾值設置為每分鐘 100 天的數據(不是請求)會有什么樣的結果呢?這個技巧特別狡猾。

首先,它的確為你的開發測試周期設置了一個最大閾值。你可以寫一些代碼,運行一個測試,然后開始等待。但它的要點在于它加入了另一個因素,讓代碼可能會莫名其妙地失敗。

最厲害的是當你正在嘗試開發一個高度可擴展的應用程序的時候,你到底該怎么開始測試隨便什么類型的負載呢?簡單的答案是你可以在生產環境中進行測試,也可以根本不做任何測試。

PROD 中的應用程序級別速率限制

應用程序級速率限制這個技巧的美妙之處在于,你需要一個消息隊列才行。當然可能還有其他技巧,但如果它是一個 Web 應用,并且你不想讓一堆長時間運行的線程在隊列中運行,那么這幾乎是你唯一的選擇。

當然,它們也加入了其他一些東西,但這些幾乎不值得一提,因為這些東西只不過是典型的數據結構挑戰或糟糕的參數化選項而已。這些是你平日里經常要面對的挑戰,并不是那些即便是最有經驗的開發人員也會屈服的挑戰。

在過去的幾個月里,我花了很多時間試圖想象這個 API 背后的團隊究竟是什么樣子的,以及他們到底有什么樣的動機來開發這樣一個 API。無論你是如何看待它的,他們的初衷肯定是防止別人使用這個 API。也許,他們正在與一個其基礎設施擁有數十年歷史的系統交互,這一系統會因最輕微的干擾而崩潰。也許他們有很多新招來的開發人員,編寫了一些非常低效的代碼,而當他們探討解決方案的時候,最后想出來的辦法就是盡可能給用戶設置更多障礙?或者也許他們只是絲毫沒有同理心。也許當他們權衡設計決策時,可用性這一條的評分被減到了零,這樣其他所有問題就都能得到最大程度的重視了。

但我認為還有另一種可能。公司都喜歡把他們的花園圍起來,但在健身領域,數據可移植性是一個賣點。那么,你如何才能同時實現兩者呢?你如何才能一邊把你的花園圈起來,與此同時給大家指出大門的位置呢?如果是因為這樣的理由,這個開發噩夢就完全可以解釋清楚了。在這種情況下,認真努力地嘗試編寫代碼來使用它的用戶就是唯一的傻瓜。

原文鏈接:

https://chrislukic.com/2021/06/16/techniques-to-prevent-adoption-of-your-api/

分享到:
標簽:API
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定