python开发项目架构图_我的第一个python web开发框架(8)——项目结构与RESTful接口风格说明...
PS:再次說明一下,原本不想寫的太啰嗦的,可之前那個系列發(fā)布后發(fā)現(xiàn),好多朋友都想馬上拿到代碼立即能上手開發(fā)自己的項目,對代碼結(jié)構(gòu)、基礎(chǔ)常識、分類目錄與文件功能結(jié)構(gòu)、常用函數(shù)......等等什么都不懂,然后就想使用,我真的很無語,還有一些朋友有十幾年開發(fā)經(jīng)驗也會問一些很基礎(chǔ)的問題,我都不知道怎么回答了。一下子拿到整個項目的代碼,初學(xué)者要上手并不是那么容易的事情,很多代碼經(jīng)過層層封裝后,反復(fù)跳轉(zhuǎn)調(diào)用,不弄暈就很不容易了,所以得一步步來,了解整個代碼的發(fā)展歷程,知道它是怎么變化的,了解常用代碼函數(shù)的使用方法,這樣才能快速上手,游刃有余。
過了兩天,小白與老菜在公司加完班后,小白看到老菜準(zhǔn)備走人,趕緊逮著機(jī)會走了過去。
小白:老大有空嗎?想和您再聊一會,請教幾個問題?
老菜:哈哈...有什么問題說來聽聽。
小白:按您上次說的準(zhǔn)備工作基本都準(zhǔn)備好了,包括開發(fā)環(huán)境、前端頁面、數(shù)據(jù)庫設(shè)計等,現(xiàn)在就要進(jìn)入編碼階段了,上次講的文件分類擺放什么的不太明白,為什么要這么做?還有就是我沒有積累過各種常用工具函數(shù),能否發(fā)幾個給我?
老菜:工具函數(shù)回頭發(fā)給你,對于文件分類擺放我再細(xì)說一下。
我與很多開發(fā)人員合作過,由于不少程序員對項目文件的分類管理不太重視,所以開發(fā)一段時間以后,就會發(fā)現(xiàn)整個項目變得很亂很難管理,大家根據(jù)自己的喜好隨便創(chuàng)建目錄,而各個程序文件也沒有分類放到對應(yīng)的文件夾里,另外由于大家沒有查看別人代碼的習(xí)慣且文件管理混亂,同樣的功能經(jīng)常會自己寫自己的,造成重復(fù)開發(fā)。時間久了以后需要對項目進(jìn)行維護(hù)時,就是各種找,項目小問題還不大,項目大時程序文件比較多要修改一個bug都很麻煩。所以在開發(fā)前,大家需要先約定好項目結(jié)構(gòu)說明,這樣大家在開發(fā)時都會分門別類的在對應(yīng)分類文件夾里創(chuàng)建程序文件,且程序文件命名都使用統(tǒng)一的規(guī)范,可讀性強(qiáng),大家理解起來也容易。
比如說我常用的項目結(jié)構(gòu):(如下圖)
api
接口api文件夾
common
工具函數(shù)文件夾
config
配置文件夾
external_interface
外部接口調(diào)用文件夾
log
日志文件夾
logic
邏輯層文件夾
service
python服務(wù)
static
靜態(tài)文件夾
test
測試文件夾
main.py
程序主文件
有了約束后,相關(guān)開發(fā)人員清楚各個目錄功能,就很容易找到自己想要的代碼或函數(shù),同時也知道要添加的文件或函數(shù)往哪里加。
比如說管理員管理表(manager),我們一般接口文件名會用這個表名來命名:manager.py,針對這個表進(jìn)行的查詢、添加記錄、修改記錄、刪除記錄和其他操作,這些功能函數(shù)都會放在manager.py中,方便出現(xiàn)異常時定位查找。
工具函數(shù)文件必須使用功能名稱的英文名來命名,一般我還會加上后綴_helper來進(jìn)行區(qū)分,讓大家一看到這個文件就知道他是common里的工具函數(shù)文件,比如:datetime_helper.py(日期操作包)、db_helper.py(數(shù)據(jù)庫操作包)、log_helper.py(日志操作包)等。邏輯層文件名,我會添加后綴_logic,python服務(wù)文件會添加后綴_service,測試類文件會添加后綴_test來區(qū)分文件功能。當(dāng)然不添加后綴或用其他約定好的前綴或后綴名都可以,只要大家遵循統(tǒng)一的約束,開發(fā)起來就會輕松多了。
另外,由于python的url路由和.net、php的不一樣,不是用文件名來做為訪問路由的,而是在文件中自定義的,所以在命名上也是要遵循一定的約束,這樣管理起來才比較容易。現(xiàn)在比較流行RESTful風(fēng)格的接口(路由),你可以嘗試一下用這個小項目練練手,熟悉一下。
關(guān)于RESTful的說明網(wǎng)上有太多文章了,這里就不再細(xì)說它的定義。那么使用它有什么好處呢?我個人覺得使用這種url設(shè)計風(fēng)格,最大的好處就是我們不用再為url起名而苦惱了(哈哈...說笑的...),RESTful風(fēng)格設(shè)計的url結(jié)構(gòu)清晰,讓人容易理解每個url的作用,擴(kuò)展起來也方便。
那么我們來說說怎么用它來設(shè)計url。首先url名稱上盡量使用名詞,不要用動詞,比如對管理員表進(jìn)行操作,url設(shè)計不要用add_manager、edit_manager等方式;對資源的操作,我們使用HTTP協(xié)議里的動詞來實現(xiàn)。
GET:獲取資源
POST:創(chuàng)建資源
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/ (禁用)
當(dāng)然,為了讓url更清晰,有時還會添加一些分類類別(也有可能是多級分類),比如前后端接口區(qū)分,會在manager前增加manage或admin,例如:GET http://127.0.0.1/manage/manager/(獲取后臺管理系統(tǒng)的管理員列表)
好了,你自己上網(wǎng)去查查相關(guān)資料,如果不會的話參考我給你的demo,照著復(fù)制粘貼就可以了,只有動手做多了,坑踩多了就理解了。趕快去嘗試一下吧,只有使用過你才能真正理解它的用法與好處。
版權(quán)聲明:本文原創(chuàng)發(fā)表于?博客園,作者為
python開發(fā)QQ群:669058475(本群已滿)、733466321(可以加2群)? ? 作者博客:http://www.cnblogs.com/EmptyFS/
總結(jié)
以上是生活随笔為你收集整理的python开发项目架构图_我的第一个python web开发框架(8)——项目结构与RESTful接口风格说明...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Go 语言web 框架 Gin 练习4
- 下一篇: python如何画虚线_Python威力