想像一下,你寫了一個很棒的程式,你想要與其他開發者分享這個程式,讓他們可以在自己的應用程式中使用,但卻沒有一個好用又方便的方式,你也不想直接把你的程式碼給他們,因為這樣做可能會很麻煩,而且難以管理。
這就是 API 派上用場的地方。API 就像是一個服務窗口,讓其他應用程式可以與你的程式互動,而不需要知道你的程式碼是如何運作的。,你可以建立一個 API,讓其他人可以輕鬆地將你的程式功能整合到自己的應用程式中,而不需要處理你的程式碼。
Flask 是一個 Python 網頁框架,可以用來輕鬆建立 API。你可以使用 Flask 建立一個簡單的網頁伺服器,處理來自其他應用程式的請求。
ngrok 則是一個可以讓你將本地電腦上的伺服器發佈到網際網路上的工具。透過 ngrok,你可以獲得一個公開的網址,讓其他開發者可以透過這個網址訪問你的 API。
我們可以使用 Flask
這個輕量級的 Python 網頁框架來快速構建 API。
首先,安裝 Flask:
pip install Flask
在這個範例中,我們將撰寫一個簡單的 API,它接受一個數字並返回該數字的平方。
建立一個名為 app.py
的檔案,內容如下:
from flask import Flask, request, jsonify
app = Flask(__name__)
# 定義一個簡單的路由來返回數字的平方
@app.route('/square', methods=['GET'])
def square():
try:
number = float(request.args.get('number'))
result = number ** 2
return jsonify({'number': number, 'square': result})
except (TypeError, ValueError):
return jsonify({'error': 'Invalid input. Please provide a valid number.'}), 400
if __name__ == '__main__':
app.run(debug=True)
這段程式碼實現了一個簡單的 /square
API 路由,當你傳遞一個數字給它,它會返回該數字的平方。
例如,訪問 http://127.0.0.1:5000/square?number=3
將返回:
{
"number": 3.0,
"square": 9.0
}
ngrok
是一個可以讓你本地開發的伺服器暴露給網路的工具。它會創建一個公開的 URL,並將該 URL 對應到你的本地伺服器。
首先到 ngrok 官網 下載並安裝 ngrok。
在終端執行以下指令來啟動 Flask 伺服器:
python app.py
這會啟動伺服器在 localhost:5000
上運行。
在另一個終端中,運行以下指令來啟動 ngrok:
ngrok http 5000
這將會創建一個公開的 URL,將 localhost:5000
曝露到網路上。輸出結果將如下所示:
Forwarding http://<random-id>.ngrok.ngrok-free.app -> http://localhost:5000
將這個 http://<random-id>.ngrok-free.app
提供給其他人,他們可以使用這個網址來訪問你的 API。
http://<random-id>.ngrok-free.app/square?number=5
將會返回:
{
"number": 5.0,
"square": 25.0
}
若您在啟動 ngrok 時遇到的 Error 如下:
ERROR: authentication failed: Usage of ngrok requires a verified account and authtoken.
代表你在嘗試啟動 ngrok
的 HTTP tunnel 時,ngrok 無法驗證你的帳戶,因為還沒有配置 authtoken
。ngrok 要求每個使用者都要註冊一個帳戶並綁定一個 authtoken
才能使用。解決此問題的方法如下:
登錄後,到 Your Authtoken 頁面。
你會看到一個類似於這樣的命令:這裡的 YOUR_AUTHTOKEN
是你個人帳戶的令牌。
ngrok config add-authtoken YOUR_AUTHTOKEN
在終端中運行:
ngrok config add-authtoken YOUR_AUTHTOKEN
在成功配置了 authtoken
後,重新運行 ngrok tunnel:
ngrok http 5000
這樣,ngrok 將會在本地的 localhost:5000
創建一個公開的 URL,並且可以被外部訪問。
authtoken
只需配置一次,之後 ngrok 每次都會自動使用這個令牌。