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

  PS:再次說明一下,本來不想寫的太囉嗦的,可以前那個系列發佈後發現,好多朋友都想立刻拿到代碼當即能上手開發本身的項目,對代碼結構、基礎常識、分類目錄與文件功能結構、經常使用函數......等等什麼都不懂,而後就想使用,我真的很無語,還有一些朋友有十幾年開發經驗也會問一些很基礎的問題,我都不知道怎麼回答了。一會兒拿到整個項目的代碼,初學者要上手並非那麼容易的事情,不少代碼通過層層封裝後,反覆跳轉調用,不弄暈就很不容易了,因此得一步步來,瞭解整個代碼的發展歷程,知道它是怎麼變化的,瞭解經常使用代碼函數的使用方法,這樣才能快速上手,遊刃有餘。php

 

  過了兩天,小白與老菜在公司加完班後,小白看到老菜準備走人,趕忙逮着機會走了過去。前端

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

  老菜:哈哈...有什麼問題說來聽聽。程序員

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

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

  我與不少開發人員合做過,因爲很多程序員對項目文件的分類管理不過重視,因此開發一段時間之後,就會發現整個項目變得很亂很難管理,你們根據本身的喜愛隨便建立目錄,而各個程序文件也沒有分類放到對應的文件夾裏,另外因爲你們沒有查看別人代碼的習慣且文件管理混亂,一樣的功能常常會本身寫本身的,形成重複開發。時間久了之後須要對項目進行維護時,就是各類找,項目小問題還不大,項目大時程序文件比較多要修改一個bug都很麻煩。因此在開發前,你們須要先約定好項目結構說明,這樣你們在開發時都會分門別類的在對應分類文件夾裏建立程序文件,且程序文件命名都使用統一的規範,可讀性強,你們理解起來也容易。api

  好比說我經常使用的項目結構:(以下圖)數據庫設計

  

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/

相關文章
相關標籤/搜索