align=left&display=inline&height=322&name=image.png&originheight=322&originwidth=338&size=154389&status=done&style=none&width=338)
隨意檢視乙個**庫,可以看到**的編寫過程,某些**可能在現在看來實現很低效和可笑,但是在當時的技術和時間場景下,肯定是最優的輸出。
也可以在gitlab上看看每次的pull request ,看看當時對這些**的codereview ;
反饋出的問題就是程式的設計非常重要。而介面是功能的抽象,相對比較穩定,對團隊來說影響比較大。
先給介面來個簡單的定義:即協議,約定了請求和響應的引數和格式。
介面設計要求是:
1.簡潔;
2.考慮到向後相容;
業界有一些基本的原則:
restfull是一種設計風格,一切介面皆是資源。
目前是設計的主流,思想也非常先進。
請求和響應中的引數要結構化,好處是易讀易用。
這個怎麼重要都不為過,介面設計必須考慮認證和授權,保證特定的人只能訪問特定的資源。
同時需要注意在日誌中不能含有使用者和系統的敏感資訊。
也就是介面要通用,可以處理不同客戶端的請求。一般在介面設計的時候,可以帶入透傳引數,比如時區,位置(省市區),系統型別,系統版本,應用型別,應用版本等;
即介面的第一次請求的結果和後面n次的重試結果要不變,需要結合場景來保證。
有了介面設計的原則,可以挑選乙個可靠的介面框架來支援自己的工作,
乙個好的介面框架應該有如下特點:
對訪問控制的支援;
自動測試的支援;
請求響應格式和序列化的支援;
日誌和日誌過濾的支援;
自動生成文件的支援;
對架構和效能的影響較小;
我一般選的springmvc,因為平時工作跟spring貼合的比較緊,而且spring有各種生態,適合在不同的行業和公司使用。jersey也用,雖然靈活,但是不具備普遍適用性;
api太自由,會影響團隊的協作,而共同約定api的設計模式和實現模式可以解決這個問題。
要綜合考慮向後的相容性,但是只實現當前軟體當前階段必須的功能點。
面向切面程式設計可以在跟業務無關的垂直領域處理問題,比如日誌,監控,解析等;可以提高**的重用性和規範性;
但是也有缺點,比如,增加了測試和分析的難度,也對研發人員要求比較高。
所以需要綜合考慮。
介面實現進行封裝可以提高可維護性,但是也會帶來效能開銷,所以也是需要綜合考慮的。
設計良好的介面,可以提高軟體的復用性,提高團隊的輸出效率和質量。
REST介面設計規範
介面請求引數和響應資料均使用utf 8編碼。請求頭指定內容及編碼型別 content type text html charset utf 8 或 使用更安全的https協議進行資料傳輸。介面返回資料使用json格式 1 http狀態碼 例如 http 1.1 400 bad request 2 業...
UI介面設計 介面設計流程
人類社會逐步向非物質社會邁進,網際網路資訊產業已經走入我們的生活。在這樣乙個非物質社會中,與軟體這些非物質產品再也不象過去那樣緊緊靠技術就能處於不敗之地。工業設計開始關注非物質產品。但是在國內依然普遍存在這樣乙個稱呼 美工 工 的意思就是沒有思想緊緊靠體力工作的人。這是乙個很愚昧的做法,愚昧在於稱呼...
總結常見的違背Rest原則的介面設計做法
此文已由作者鄭華斌授權網易雲社群發布。rest這詞我們常常掛在嘴邊,比如 開發乙個rest介面 又比如spring專案的 commoncontroller使用了 restcontroller註解,顧名思義,告訴讀者這是乙個rest介面的實現。然而以 restcontroller註解的介面卻不一定符合...