




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
第flask路由分模塊管理及自定義restful響應格式詳解目錄一、flask路由分模塊管理1.1、使用藍圖1.2、使用flask_restful二、自定義flask_restful響應格式
一、flask路由分模塊管理
1.1、使用藍圖
在flask中可以使用藍圖Blueprint來進行創(chuàng)建路由進行分模塊。具體操作,我們可以在項目根目錄下創(chuàng)建一個controller文件夾來存儲分模塊的路由。
在controller文件夾里創(chuàng)建product_controller.py,在里面如下寫法引入藍圖,并且注冊藍圖:
fromflaskimportBlueprint
product_blue=Blueprint('product',__name__)
#定義藍圖路徑及請求方法和請求返回邏輯
@product_blue.route('/get',methods=['get','post'])
defgetproduct():
return'product'
@product_blue.route('/search',methods=['get','post'])
defsearchproduct():
return'search'
那么我們在項目主邏輯文件main.py中,去引入并注冊這個藍圖:
fromflaskimportFlask
fromduct_controllerimportproduct_blue
app=Flask(__name__)
#商品模塊
app.register_blueprint(product_blue,url_prefix='/product')
if__name__=='__main__':
app.run()
接下來我們運行程序,可以看到如下效果:
可以看到我們使用藍圖分模塊的創(chuàng)建已經(jīng)生效了,這樣如果模塊對的話,我們就方便管理了。不會造成代碼全部冗余在一個主文件中。
1.2、使用flask_restful
那么相比與藍圖Blueprint,flask_restful的優(yōu)勢就在于它能夠做更多的操作,比如參數(shù)的驗證,返回直接字典就能解析成json。
首先我們輸入命令pip3installflask_restful安裝flask_restful。在product_controller中寫入如下代碼:
fromflask_restfulimportResource,reqparse
classProductView(Resource):
@staticmethod
defpost():
parse=reqparse.RequestParser()
parse.add_argument('product_id',type=str,help='商品id必傳',required=True,trim=True)
args=parse.parse_args()
product_id=duct_id
return{
'msg':'商品id是'+product_id,
'code':200
@staticmethod
defget():
return{
'msg':'商品',
'code':200
那么main.py主文件中修改如下:
fromduct_controllerimportProductView
app=Flask(__name__)
api=Api(app)
api.add_resource(ProductView,'/product',endpoint='product')
if__name__=='__main__':
app.run()
現(xiàn)在已經(jīng)是restful形式的api了,我們采用apifox或者postman測試請求接口如下:
可以看到get請求成功,但是在post請求時,我們沒有傳必傳參數(shù),所以出現(xiàn)了報錯。我們嘗試將必傳參數(shù)加上:
那么可以看到將必傳的參數(shù)加上后,請求成功。兩種模式可以共存,但是一般我們只用一種就行了。
相信細心的小伙伴已經(jīng)發(fā)現(xiàn),失敗和成功返回的數(shù)據(jù)格式不一樣,成功有code,失敗卻沒有code,那么我想自定義失敗返回的數(shù)據(jù)格式,將怎么操作呢,接下來自定義flask_restful的錯誤響應。
二、自定義flask_restful響應格式
在根目錄下創(chuàng)建errors.py,寫入如下代碼:
"""
designthecustomerrorresponseofflask-restful
fromflask_restfulimportabort
defgenerate_response(msg,status):
return{
'code':status,
'msg':msg,
defcustom_abort(http_status_code,*args,**kwargs):
ifhttp_status_code==400:
abort(400,**generate_response(msg=[kwargs.get('message')],status=http_status_code))
abort(http_status_code)
我們將錯誤狀態(tài)拎出來自定義返回格式。在main.py主文件中加入這兩行代碼:
fromerrorsimportcustom_abort
flask_restful.abort=c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 腫瘤科靜脈治療操作規(guī)范教學
- 中小學健康教育規(guī)范解讀
- 員工合理訂貨培訓
- 保安規(guī)范培訓規(guī)范
- 住宅物業(yè)案例培訓課件
- 結(jié)直腸腫瘤化療綜合治療策略
- 口腔護理培訓流程
- 國語推廣普及課件
- CRRT??婆嘤枀R報
- 銷售激勵培訓課件
- GM/T 0021-2012動態(tài)口令密碼應用技術規(guī)范
- GB/T 28022-2021玩具適用年齡判定指南
- GB/T 11832-2002翻斗式雨量計
- FZ/T 73001-2016襪子
- 2022版音樂課程標準解讀
- 充電樁檢測報告模板
- 車載診斷系統(tǒng)(OBD)簡介課件
- 無犯罪證明委托書模板
- 城市軌道交通列車運行圖編制課件
- 吊車施工專項施工方案
- (新版)國際法配套練習題庫500題(含各題型)
評論
0/150
提交評論