服務端介面中的那些坑

王磊的部落格發表於2016-12-21

TOP1:版本意識與相容性問題。 

  對於一個好的程式設計師來說,思考的時間>=寫程式碼的時間,如果思路不對寫的程式碼越多,錯的也越多,任何時候思考是保證高效工作最省事的武器。

  對於介面開發,不同於bs專案,伺服器端一更新,所有問題都解決了,大家訪問都是最新的程式,不存在任何版本的問題;但介面開不同,因為你開發介面有是被不同的客戶端版本訪問的,比如app的介面,app版本有很多個。這個時候問題來了,如果中途我調整了資料庫多加了欄位,新app使用者請求的時候帶了這個欄位,插入和修改都不會存在任何問題,但老客戶端呢,如果此時你及沒有把新舊介面分離,也沒判空除了新的欄位,那麼你的程式就會報錯,插入到資料庫就會有問題,你的舊app請求就會出問題。

  所以開發介面的第1要訣:所有的方法升級必須考慮老使用者的相容性問題。

 

TOP2:使用者許可權驗證。

  安全是一個系統之所以生存的根基,如果做任何程式不考慮安全問題,那麼他的程式一定是糟糕的,一定的失敗的。

  設想這樣一個情景,我在開發一個修改使用者資料介面的時候,只需要使用使用者的id和要修改的資料就夠了嗎?當然不夠,如果只根據使用者的id就修改資料的話,那麼非法的使用者就擁有了修改所有的使用者資料的權利,只要id傳對,這是多麼可怕的事情。

  所以開發介面第2要訣:在修改和檢視任何私有資料的時候,先用令牌驗證使用者的有效性,證明你是你自己了才能進行關鍵性的操作,這個步驟在介面這裡是永遠不能省略的

 

TOP3:在for迴圈中巢狀查詢。

  效能問題是一個程式好壞最直觀的體現,也是驗證一個程式設計師最直接的方式,在這裡呢我要強調一件事,就是不要在for迴圈裡面巢狀查詢。因為大家都知道對於伺服器來說,最可能造成資源瓶頸的地方就是資料庫,所以資料庫資源也就是最昂貴的資源。

  設想一個這樣的情景,如果現在有1w個經銷商,每個經銷商有多個經驗產品,他們是通過中間表進行關聯的,我現在要查詢每個經銷商的產品資料組成一個物件返回給app,最直觀的做法是什麼?就是我for 1w次去查詢經銷商的產品,然後組成一個資料,那麼這樣做造成的結果是什麼,你會查詢至少1w次資料,那麼有沒有辦法解決這個問題,當然,你可以把所有經營產品查出來,放到記憶體中然後每次從記憶體中去取經營產品就可以了,這樣就把1w次的查詢變成了1次。

  所以開發介面第3要訣:不要在for迴圈中查詢資料庫。

 

相關文章