TOP1:版本意識與兼容性問題。
對於一個好的程序員來說,思考的時間>=寫代碼的時間,如果思路不對寫的代碼越多,錯的也越多,任何時候思考是保證高效工作最省事的武器。
對於接口開發,不同於bs項目,服務器端一更新,所有問題都解決了,大家訪問都是最新的程序,不存在任何版本的問題;但接口開不同,因為你開發接口有是被不同的客戶端版本訪問的,比如app的接口,app版本有很多個。這個時候問題來了,如果中途我調整了數據庫多加了字段,新app用戶請求的時候帶了這個字段,插入和修改都不會存在任何問題,但老客戶端呢,如果此時你及沒有把新舊接口分離,也沒判空除了新的字段,那么你的程序就會報錯,插入到數據庫就會有問題,你的舊app請求就會出問題。
所以開發接口的第1要訣:所有的方法升級必須考慮老用戶的兼容性問題。
TOP2:用戶權限驗證。
安全是一個系統之所以生存的根基,如果做任何程序不考慮安全問題,那么他的程序一定是糟糕的,一定的失敗的。
設想這樣一個情景,我在開發一個修改用戶資料接口的時候,只需要使用用戶的id和要修改的資料就夠了嗎?當然不夠,如果只根據用戶的id就修改資料的話,那么非法的用戶就擁有了修改所有的用戶資料的權利,只要id傳對,這是多么可怕的事情。
所以開發接口第2要訣:在修改和查看任何私有資料的時候,先用令牌驗證用戶的有效性,證明你是你自己了才能進行關鍵性的操作,這個步驟在接口這里是永遠不能省略的。
TOP3:在for循環中嵌套查詢。
性能問題是一個程序好壞最直觀的體現,也是驗證一個程序員最直接的方式,在這里呢我要強調一件事,就是不要在for循環里面嵌套查詢。因為大家都知道對於服務器來說,最可能造成資源瓶頸的地方就是數據庫,所以數據庫資源也就是最昂貴的資源。
設想一個這樣的情景,如果現在有1w個經銷商,每個經銷商有多個經驗產品,他們是通過中間表進行關聯的,我現在要查詢每個經銷商的產品數據組成一個對象返回給app,最直觀的做法是什么?就是我for 1w次去查詢經銷商的產品,然后組成一個數據,那么這樣做造成的結果是什么,你會查詢至少1w次數據,那么有沒有辦法解決這個問題,當然,你可以把所有經營產品查出來,放到內存中然后每次從內存中去取經營產品就可以了,這樣就把1w次的查詢變成了1次。
所以開發接口第3要訣:不要在for循環中查詢數據庫。