我的第一個python web開發框架(8)——項目結構與RESTful接口風格說明


  PS:再次說明一下,原本不想寫的太啰嗦的,可之前那個系列發布后發現,好多朋友都想馬上拿到代碼立即能上手開發自己的項目,對代碼結構、基礎常識、分類目錄與文件功能結構、常用函數......等等什么都不懂,然后就想使用,我真的很無語,還有一些朋友有十幾年開發經驗也會問一些很基礎的問題,我都不知道怎么回答了。一下子拿到整個項目的代碼,初學者要上手並不是那么容易的事情,很多代碼經過層層封裝后,反復跳轉調用,不弄暈就很不容易了,所以得一步步來,了解整個代碼的發展歷程,知道它是怎么變化的,了解常用代碼函數的使用方法,這樣才能快速上手,游刃有余。

 

  過了兩天,小白與老菜在公司加完班后,小白看到老菜准備走人,趕緊逮着機會走了過去。

  小白:老大有空嗎?想和您再聊一會,請教幾個問題?

  老菜:哈哈...有什么問題說來聽聽。

  小白:按您上次說的准備工作基本都准備好了,包括開發環境、前端頁面、數據庫設計等,現在就要進入編碼階段了,上次講的文件分類擺放什么的不太明白,為什么要這么做?還有就是我沒有積累過各種常用工具函數,能否發幾個給我?

  老菜:工具函數回頭發給你,對於文件分類擺放我再細說一下。

  我與很多開發人員合作過,由於不少程序員對項目文件的分類管理不太重視,所以開發一段時間以后,就會發現整個項目變得很亂很難管理,大家根據自己的喜好隨便創建目錄,而各個程序文件也沒有分類放到對應的文件夾里,另外由於大家沒有查看別人代碼的習慣且文件管理混亂,同樣的功能經常會自己寫自己的,造成重復開發。時間久了以后需要對項目進行維護時,就是各種找,項目小問題還不大,項目大時程序文件比較多要修改一個bug都很麻煩。所以在開發前,大家需要先約定好項目結構說明,這樣大家在開發時都會分門別類的在對應分類文件夾里創建程序文件,且程序文件命名都使用統一的規范,可讀性強,大家理解起來也容易。

  比如說我常用的項目結構:(如下圖)

  

api  接口api文件夾
common  工具函數文件夾
config  配置文件夾
external_interface  外部接口調用文件夾       
log  日志文件夾
logic  邏輯層文件夾
service  python服務
static  靜態文件夾
test  測試文件夾
main.py 程序主文件










 

 

 

 

  有了約束后,相關開發人員清楚各個目錄功能,就很容易找到自己想要的代碼或函數,同時也知道要添加的文件或函數往哪里加。

  比如說管理員管理表(manager),我們一般接口文件名會用這個表名來命名:manager.py,針對這個表進行的查詢、添加記錄、修改記錄、刪除記錄和其他操作,這些功能函數都會放在manager.py中,方便出現異常時定位查找。

  工具函數文件必須使用功能名稱的英文名來命名,一般我還會加上后綴_helper來進行區分,讓大家一看到這個文件就知道他是common里的工具函數文件,比如:datetime_helper.py(日期操作包)、db_helper.py(數據庫操作包)、log_helper.py(日志操作包)等。邏輯層文件名,我會添加后綴_logic,python服務文件會添加后綴_service,測試類文件會添加后綴_test來區分文件功能。當然不添加后綴或用其他約定好的前綴或后綴名都可以,只要大家遵循統一的約束,開發起來就會輕松多了。

 

  另外,由於python的url路由和.net、php的不一樣,不是用文件名來做為訪問路由的,而是在文件中自定義的,所以在命名上也是要遵循一定的約束,這樣管理起來才比較容易。現在比較流行RESTful風格的接口(路由),你可以嘗試一下用這個小項目練練手,熟悉一下。

  關於RESTful的說明網上有太多文章了,這里就不再細說它的定義。那么使用它有什么好處呢?我個人覺得使用這種url設計風格,最大的好處就是我們不用再為url起名而苦惱了(哈哈...說笑的...),RESTful風格設計的url結構清晰,讓人容易理解每個url的作用,擴展起來也方便。

  那么我們來說說怎么用它來設計url。首先url名稱上盡量使用名詞,不要用動詞,比如對管理員表進行操作,url設計不要用add_manager、edit_manager等方式;對資源的操作,我們使用HTTP協議里的動詞來實現。

  GET:獲取資源

  POST:創建資源

  PUT:更新資源

  DELETE:刪除資源

  例如:

  獲取管理員列表:GET http://127.0.0.1/manager/?page=0&rows=20&sidx=id&sord=desc

  添加管理員:POST http://127.0.0.1/manager/

  修改id為1的管理員記錄信息:PUT http://127.0.0.1/manager/1/

  獲取id為1的管理員記錄信息:GET http://127.0.0.1/manager/1/

  刪除id為1的管理員記錄:DELETE http://127.0.0.1/manager/1/

  啟用或禁用id為1的管理員記錄:PUT http://127.0.0.1/manager/1/enable/ (啟用)   PUT http://127.0.0.1/manager/1/disable/ (禁用)

  當然,為了讓url更清晰,有時還會添加一些分類類別(也有可能是多級分類),比如前后端接口區分,會在manager前增加manage或admin,例如:GET http://127.0.0.1/manage/manager/(獲取后台管理系統的管理員列表)

  好了,你自己上網去查查相關資料,如果不會的話參考我給你的demo,照着復制粘貼就可以了,只有動手做多了,坑踩多了就理解了。趕快去嘗試一下吧,只有使用過你才能真正理解它的用法與好處。

 

 

版權聲明:本文原創發表於 博客園,作者為 AllEmpty 本文歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則視為侵權。

python開發QQ群:669058475(本群已滿)、733466321(可以加2群)    作者博客:http://www.cnblogs.com/EmptyFS/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM