使用 Flask 和 Python 開發(fā)自己的API
本文章將一步一步教你如何使用Flask和Python從頭開始設(shè)置自己的API。教程結(jié)束時,你將能夠從頭開始設(shè)置你自己的API。我將一步一步指導(dǎo)你,使你能夠基于Flask和Python開發(fā)你自己的API。
什么是API?
API代表應(yīng)用程序編程接口。它是你Web應(yīng)用程序的后端部分,通常在你的服務(wù)器上運行。API通常用于服務(wù)于你的前端,并且也可以作為第三方集成的接口。API由一系列服務(wù)組成,用于獲取或推送數(shù)據(jù)到你的后端服務(wù)器。
你需要什么?
首先,你需要安裝Python,你按照以下鏈接中解釋的說明進行安裝:
https://www.python.org/downloads/?source=post_page-----395a9edd21dc--------------------------------
現(xiàn)在,由于我們將使用Flask,我們必須安裝它,但什么是Flask呢?
“Flask是一個用Python編寫的微Web框架。它被歸類為微框架,因為它不需要特定的工具或庫。[2]它沒有數(shù)據(jù)庫抽象層、表單驗證或任何其他組件,現(xiàn)有的第三方庫提供常用功能。然而,F(xiàn)lask支持擴展,可以添加應(yīng)用程序特性,就好像它們是在Flask本身中實現(xiàn)的一樣。擴展存在于對象關(guān)系映射器、表單驗證、上傳處理、各種開放認證技術(shù)和幾個常見的框架相關(guān)工具。[3]”維基百科
要安裝Flask,你可以使用pip(Python的包安裝程序):
pip install Flask
構(gòu)建你自己的Flask API
在以下示例中,我們將設(shè)置一個API,以捕獲HTTP POST和GET,并簡單地返回一條消息以查看它是否工作(你需要創(chuàng)建一個Python文件,例如flask_api.py來運行)。
# Import Flask
from flask import Flask
app = Flask(__name__)
#Define your paths & methods for your API
@app.route('/getapi',methods=['GET'])
def getapi():
return "GET API test"
@app.route('/postapi',methods=['POST'])
def postapi():
return "POST API test"
#Run the server(by default, the port is 5000)
app.run()
你可以使用這個命令運行應(yīng)用程序:
python flask_api.py
結(jié)果應(yīng)該是:
代碼解釋
首先,你需要導(dǎo)入Flask:
# Import Flaskfrom flask import Flask
然后,你必須指定你的API路徑,例如對于“127.0.0.1:5000/getapi”:
@app.route('/getapi',methods=['GET'])
對于每個路徑,你必須定義一個函數(shù),當請求API路徑時將調(diào)用該函數(shù)。
def getapi():
return print"GET API test"
請注意,你可以配置每個路徑支持的方法(在這個例子中,我指定了第一個路徑支持GET方法,第二個路徑支持POST方法)。最后,你必須運行你的應(yīng)用程序:
#Run the server(by default, the port is 5000)
app.run()
現(xiàn)在我們可以使用這個在線工具測試API:
https://reqbin.com/?source=post_page-----395a9edd21dc--------------------------------
這是GET請求的結(jié)果:
以及POST請求的結(jié)果:
注意:由于服務(wù)器在本地運行,服務(wù)器IP是127.0.0.1,5000(默認)是端口。
如果你想返回一個JSON而不是簡單的文本,那么你可以添加這段代碼:
# Import Flask
from flask import Flask
from flask import jsonify
app = Flask(__name__)
#Define your paths
@app.route('/postapijson',methods=['POST'])
def postapi():
return jsonify({'response': 'JSON response works !'})
#Run the server(by default, the port is 5000)
app.run()
結(jié)果將是: