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