1.API接口:hello world 案例
from flask import Flaskfrom flask_restful import Api, Resourceapp = Flask(__name__)api = Api(app)class HelloWorld(Resource): def get(self): return {'hello': 'world'}api.add_resource(HelloWorld, '/')if __name__ == '__main__': app.run(debug=True)
2.API接口:Resource充當路由的角色
官方文檔的說法:
Flask-RESTful 提供的最主要的基礎就是資源(resources)。資源(Resources)是構建在 Flask 可拔插視圖 之上,只要在你的資源(resource)上定義方法就能夠容易地訪問多個 HTTP 方法.
其實就是想表達,在資源路由上(resources)定義多個方法(get,post,put等),就可以實現多種效果
from flask import Flask, requestfrom flask_restful import Api, Resourceapp = Flask(__name__)api = Api(app)todos = {}class TodoSimple(Resource): def get(self, todo_id): return {todo_id: todos[todo_id]} def put(self, todo_id): todos[todo_id] = request.form['data'] return {todo_id: todos[todo_id]}api.add_resource(TodoSimple, '/<string:todo_id>')if __name__ == '__main__': app.run(debug=True)
解釋:
(1)TodoSimple類定義了2種方法,最終地址/string:todo_id'下面,就可以實現2種請求方法
(2)add_resource方法中第一個參數:視圖函數名;第二個參數:路由的具體地址,以及string:todo_id代表傳遞的是一個字符串,且是必要參數。
(3)request.form[‘data']獲取request里面,form表單的key為data的參數,如果request里面,沒有data參數,那報錯。如果有包含data的多個參數,那也只會取data這一個參數
step1:為字典todos定義參數,key為todo1
step2:獲取todos里面的todo1的參數
step3:更新老的數據,多傳遞其他參數
step4:獲取最新的參數:
step5:不傳遞data參數,查看報錯情況:
3.API接口:endpoint(端口)的理解:
這個問題詳情可以參考如下博文,已經解釋很詳細了:
https://www.jb51.net/article/176173.htm
簡單理解是:
url通過endpoint來去查找視圖函數(通常endpoint的名字與視圖函數名一致),但是如果不一致的時候,就需要有針對性的指定某個視圖函數去執行,也或者多個藍圖里面有一樣的視圖函數的場景下,需要指定具體的endpoint
4.API接口:參數解析
官方文檔:
(1)盡管 Flask 能夠簡單地訪問請求數據(比如查詢字符串或者 POST 表單編碼的數據),驗證表單數據仍然很痛苦。Flask-RESTful 內置了支持驗證請求數據,它使用了一個類似 argparse 的庫。
(2)需要注意地是與 argparse 模塊不同,reqparse.RequestParser.parse_args() 返回一個 Python 字典而不是一個自定義的數據結構。
新聞熱點
疑難解答