flask路由分模塊管理及自定義restful響應(yīng)格式詳解_第1頁(yè)
flask路由分模塊管理及自定義restful響應(yīng)格式詳解_第2頁(yè)
flask路由分模塊管理及自定義restful響應(yīng)格式詳解_第3頁(yè)
flask路由分模塊管理及自定義restful響應(yīng)格式詳解_第4頁(yè)
flask路由分模塊管理及自定義restful響應(yīng)格式詳解_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第flask路由分模塊管理及自定義restful響應(yīng)格式詳解目錄一、flask路由分模塊管理1.1、使用藍(lán)圖1.2、使用flask_restful二、自定義flask_restful響應(yīng)格式

一、flask路由分模塊管理

1.1、使用藍(lán)圖

在flask中可以使用藍(lán)圖Blueprint來(lái)進(jìn)行創(chuàng)建路由進(jìn)行分模塊。具體操作,我們可以在項(xiàng)目根目錄下創(chuàng)建一個(gè)controller文件夾來(lái)存儲(chǔ)分模塊的路由。

在controller文件夾里創(chuàng)建product_controller.py,在里面如下寫(xiě)法引入藍(lán)圖,并且注冊(cè)藍(lán)圖:

fromflaskimportBlueprint

product_blue=Blueprint('product',__name__)

#定義藍(lán)圖路徑及請(qǐng)求方法和請(qǐng)求返回邏輯

@product_blue.route('/get',methods=['get','post'])

defgetproduct():

return'product'

@product_blue.route('/search',methods=['get','post'])

defsearchproduct():

return'search'

那么我們?cè)陧?xiàng)目主邏輯文件main.py中,去引入并注冊(cè)這個(gè)藍(lán)圖:

fromflaskimportFlask

fromduct_controllerimportproduct_blue

app=Flask(__name__)

#商品模塊

app.register_blueprint(product_blue,url_prefix='/product')

if__name__=='__main__':

app.run()

接下來(lái)我們運(yùn)行程序,可以看到如下效果:

可以看到我們使用藍(lán)圖分模塊的創(chuàng)建已經(jīng)生效了,這樣如果模塊對(duì)的話(huà),我們就方便管理了。不會(huì)造成代碼全部冗余在一個(gè)主文件中。

1.2、使用flask_restful

那么相比與藍(lán)圖Blueprint,flask_restful的優(yōu)勢(shì)就在于它能夠做更多的操作,比如參數(shù)的驗(yàn)證,返回直接字典就能解析成json。

首先我們輸入命令pip3installflask_restful安裝flask_restful。在product_controller中寫(xiě)入如下代碼:

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測(cè)試請(qǐng)求接口如下:

可以看到get請(qǐng)求成功,但是在post請(qǐng)求時(shí),我們沒(méi)有傳必傳參數(shù),所以出現(xiàn)了報(bào)錯(cuò)。我們嘗試將必傳參數(shù)加上:

那么可以看到將必傳的參數(shù)加上后,請(qǐng)求成功。兩種模式可以共存,但是一般我們只用一種就行了。

相信細(xì)心的小伙伴已經(jīng)發(fā)現(xiàn),失敗和成功返回的數(shù)據(jù)格式不一樣,成功有code,失敗卻沒(méi)有code,那么我想自定義失敗返回的數(shù)據(jù)格式,將怎么操作呢,接下來(lái)自定義flask_restful的錯(cuò)誤響應(yīng)。

二、自定義flask_restful響應(yīng)格式

在根目錄下創(chuàng)建errors.py,寫(xiě)入如下代碼:

"""

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)

我們將錯(cuò)誤狀態(tài)拎出來(lái)自定義返回格式。在main.py主文件中加入這兩行代碼:

fromerrorsimportcustom_abort

flask_restful.abort=c

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論