【flask框架】——flask-restful風格
pip install flask-restful
1、基本使用
注意:類檢視return
返回的資料為字典,底層會通過from flask_restful import output_json
會自動將字典封裝成json物件返回。
# 在restful風格中想返回中文,需要取消ascii編碼的配置
app.config["RESTFUL_JSON"] = {"ensure_ascii": False}
# 1、建立元件物件
元件物件 = Api(app)
# 2、定義類檢視
class 自定義檢視類(Resource):
# 3、元件新增類檢視
元件物件.add_resource(檢視類, URL資源段)
1.2、類檢視的裝飾器使用
class DemoResource(Resource):
# 方案1:給檢視類中所有方法新增裝飾器
# decorator1先呼叫,但是後執行
# method_decorators = [mydecorator1, mydecorator2]
# 方案2:給指定函式新增指定的裝飾器
method_decorators = {
"get": [mydecorator1, mydecorator2],
"post": [mydecorator2]
}
def get(self):
return {"get": "get message"}
def post(self):
return {"post": "post body"}
1.3、請求引數的提取
location="請求物件的屬性"
- 屬性可以是:
args
(查詢字串)form
、json
、files
、cookies
、headers
- 是否必須傳遞,預設False,如果設定為True, 不傳遞會返回400
# 2.定義類檢視
class DemoResource(Resource):
def get(self):
# 1.建立解析物件
parser = RequestParser()
# 2.新增解析引數和規則
# location="請求物件的屬性" args form json files cookies headers
# required: 預設False, 如果設定為True, 不傳遞會返回400
parser.add_argument("name", required=True, location='json', type=regex(r'^1[3-9]\d{9}$'))
# 3.開始解析,獲取解析結果
ret = parser.parse_args()
# 4.從解析結果中提取引數值
name = ret.name
# name = ret['name']
return {'foo': 'get'}
1.4 序列化響應返回
方案一:marshal
函式 來完成序列化處理
# 序列化規則
# 擴充:Nested:可轉換 字典型別屬性
user_dict = {
'name': fields.String,
'age': fields.Integer(default=18),
'height': fields.Float,
'list1': fields.List(fields.Integer),
'dict1': {'gender': fields.Boolean}
}
# 2.定義類檢視 繼承Resource
class DemoResource(Resource):
def get(self):
# 建立模型物件
user = Person()
# 引數1:模型物件
# 引數2:序列化規則字典
return marshal(user, user_dict)
方案二:使用裝飾器marshal_with(序列化規則字典)
method_decorators = {
"get": [marshal_with(user_dict)]
}
方案三:自定義將模型類物件轉換成字典的方法【推薦使用】
def to_dict(self):
"""
將模型物件轉換成字典
:return:
"""
my_dict = {
"name": self.name,
"age": self.age,
"height": self.height,
"mylist": self.mylist,
"mydict": self.mydict,
}
return my_dict
1.5 自定義json的響應格式
flask-restful
提供了api.representation()
裝飾器方法, 允許開發者自定義返回的資料格式
1、重寫flask_restful
裡面的output_json
方法(增加需要定義的響應格式),封裝在一個工具檔案裡,方便以後呼叫。
2、使用:
3、結果:
相關文章
- Python flask-restful框架講解PythonFlaskREST框架
- flask中flask-restful是什麼?FlaskREST
- flask-restful 大型專案結構示例FlaskREST
- Flask-restful 用法及自定義引數錯誤資訊FlaskREST
- flask restful 風格 API,如何完成 RBAC 許可權控制?FlaskRESTAPI
- Flask基本框架Flask框架
- python的flask框架PythonFlask框架
- flask 框架日誌Flask框架
- Flask框架入門Flask框架
- Python之Flask框架一PythonFlask框架
- flask框架安裝使用Flask框架
- Flask框架之八SQLAlchemy -ormFlask框架SQLORM
- flask框架可以做什麼Flask框架
- Flask框架和Django框架有什麼區別?Flask框架Django
- 軟體架構風格——閉環架構風格(過程風格)架構
- 深入理解flask框架(4):sessionFlask框架Session
- Flask框架:藍圖(Blueprint)測試Flask框架
- Flask框架(二):路由與藍圖Flask框架路由
- flask框架資料庫部分(四)Flask框架資料庫
- flask框架中的cookie和sessionFlask框架CookieSession
- 輕量級Web框架Flask(二)Web框架Flask
- 學Flask框架有什麼用?為什麼學習Flask?Flask框架
- Django框架,Flask框架和Tornado框架各有什麼優缺點Django框架Flask
- 軟體架構風格——倉庫風格架構
- [python][flask] Flask 入門(以一個部落格後臺為例)PythonFlask
- python Flask框架學習——Response響應PythonFlask框架
- Flask框架搭建REST-API服務Flask框架RESTAPI
- 軟體架構風格——虛擬機器風格架構虛擬機
- 機器學習開源框架系列:Torch:3:影像風格遷移機器學習框架
- Flask框架和Django框架有什麼區別?詳細分析!Flask框架Django
- Bootstrap風格buttonboot
- Json風格指南JSON
- CSharp命名風格CSharp
- RESTful風格APIRESTAPI
- Vue API風格VueAPI
- flask專案1實戰:2.2 flask框架下使用圖片驗證碼Flask框架
- Python全棧Web(Flask框架、多表關聯)Python全棧WebFlask框架
- Flask 框架啟動無法改變埠Flask框架