詳解flask中如何獲取不請求方式的參數(shù)
前言
基于現(xiàn)在主流前后端交互的api,那么就來看看如何使用flask實現(xiàn)參數(shù)接受的。這里是我常用的方式,關(guān)于更多使用方式,請點擊這里去文檔查看更多
一、get請求下
1.1、路徑中帶有參數(shù)
1.1.1、postman示例
1.1.2、 flask代碼實現(xiàn)
@blog_base_blueprint.route('/path_posts/<int:resource_id>', methods=['GET']) def get_post_path(resource_id): resource_lists: List[models.Resource] = (models.Resource.query .filter(models.Resource.id == resource_id) .all()) return jsonify({ 'code': 0, 'msg': 'success', 'data': { "resource_list": [resource.to_format() for resource in resource_lists] } })
1.1.3、注意事項
在注冊路由的時候一定要寫上參數(shù)和參數(shù)的類型定義方法的時候一定寫上參數(shù)名,這樣才能直接使用
1.2、在url后邊帶有參數(shù)
當(dāng)參數(shù)以 params 形式傳遞,也就是參數(shù)以?a=x&b=y 的形式顯示在 url 中訪問的形式
1.2.1、postman示例
1.2.2、 flask代碼實現(xiàn)
通過request.args.get(‘key’)
和 request.values.get(‘key’)
來接收參數(shù)
@blog_base_blueprint.route('/posts', methods=['GET']) def get_posts(): current_app.logger.info('獲取列表') resource_id = request.args.get('resource_id', 2) resource_lists: List[models.Resource] = (models.Resource.query .filter(models.Resource.id == resource_id) .all()) return jsonify({ 'code': 0, 'msg': 'success', 'data': { "resource_list": [resource.to_format() for resource in resource_lists] } })
二、post請求下
前后端API交互時,常見的還是post的請求方式,且常用的有form-data 或x-www-form-urlendoded形式,還有為json數(shù)據(jù)的body體
2.1、form-data格式
2.1.1、postman示例
2.1.2、flask代碼實現(xiàn)
使用request.form
獲取
@blog_base_blueprint.route('/add_post', methods=['POST', 'GET']) def create_or_update_resource(): title = request.form.get('title') json_data = request.form return jsonify({ 'json_data' : json_data, 'title' : title, })
2.2、www-form-urlendoded格式
2.2.1、postman示例
2.2.2、flask代碼實現(xiàn)
使用request.form
接收參數(shù)
#測試www-form-urlendoded格式 @blog_base_blueprint.route('/test1', methods=['POST']) def test1(): title = request.form.get('title2') json_data = request.form id = request.values.get('id') return jsonify({ 'json_data' : json_data, 'title' : title, 'id' : id, })
2.3、json傳參格式
2.3.1、postman示例
2.3.2、flask代碼實現(xiàn)
使用request.get_json()
和 request.get_data()
實現(xiàn),使用方法參考點擊查看使用文檔
#測試json格式 @blog_base_blueprint.route('/test1_json', methods=['POST']) def test1_json(): json_data1 = request.get_data(as_text=True) print(json_data1) json_data2 = request.get_json() title = request.json.get('title') return jsonify({ 'json_data1' : json_data1, 'json_data2' : json_data2, 'title' : title, })
2.3.3、注意事項
根據(jù)結(jié)果可以看到:
- get_data()方法,獲取到的是未經(jīng)處理的原始數(shù)據(jù),如果數(shù)據(jù)格式是json的,則取得是json字符串,排序和請求參數(shù)一致
- get_json()方法,將請求參數(shù)做了處理,得到字典格式,因此排序會打亂,依據(jù)字典排序規(guī)則。
2.4、headers傳參格式
很多時候,為了安全性,接口交互時會傳遞token,這時候是使用request.headers
來接收headers里的token的
2.4.1、postman示例
2.4.2、flask代碼實現(xiàn)
使用request.headers
實現(xiàn)
@blog_base_blueprint.route('/add_post', methods=['POST', 'GET']) def create_or_update_resource(): token = request.headers.get('Authorization', '') title = request.form.get('title') # json_data = request.form return jsonify({ 'token' : token, })
以上就是詳解flask中如何獲取不請求方式的參數(shù)的詳細內(nèi)容,更多關(guān)于flask獲取參數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python基于datetime或time模塊分別獲取當(dāng)前時間戳的方法實例
今天小編就為大家分享一篇關(guān)于Python基于datetime或time模塊分別獲取當(dāng)前時間戳的方法實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02Python文件操作JSON CSV TSV Excel和Pickle文件序列化
這篇文章主要為大家介紹了Python文件操作之JSON、CSV、TSV、Excel和Pickle文件序列化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11Python學(xué)習(xí)之名字,作用域,名字空間(下)
這篇文章主要介紹了Python學(xué)習(xí)之名字,作用域,名字空間,緊接上一篇文章內(nèi)容展開全文,需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助2022-05-05