iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0
自我挑戰組

30 天程式學習筆記:我的自學成長之路系列 第 29

[DAY 29]Python API 教學:使用 Flask 和 ngrok 打造你的公開服務

  • 分享至 

  • xImage
  •  

想像一下,你寫了一個很棒的程式,你想要與其他開發者分享這個程式,讓他們可以在自己的應用程式中使用,但卻沒有一個好用又方便的方式,你也不想直接把你的程式碼給他們,因為這樣做可能會很麻煩,而且難以管理。

API 是什麼

這就是 API 派上用場的地方。API 就像是一個服務窗口,讓其他應用程式可以與你的程式互動,而不需要知道你的程式碼是如何運作的。,你可以建立一個 API,讓其他人可以輕鬆地將你的程式功能整合到自己的應用程式中,而不需要處理你的程式碼。

使用 Flask 和 ngrok

Flask 是一個 Python 網頁框架,可以用來輕鬆建立 API。你可以使用 Flask 建立一個簡單的網頁伺服器,處理來自其他應用程式的請求。

ngrok 則是一個可以讓你將本地電腦上的伺服器發佈到網際網路上的工具。透過 ngrok,你可以獲得一個公開的網址,讓其他開發者可以透過這個網址訪問你的 API。

流程

  1. 撰寫 API:使用 Flask 寫一個簡單的 API。
  2. 運行本地伺服器:啟動 Flask 伺服器來處理 API 請求。
  3. 利用 ngrok:使用 ngrok 來將本地的伺服器發佈到網路,並生成一個公開的 URL,讓其他人可以訪問。

步驟一:撰寫 Python API

我們可以使用 Flask 這個輕量級的 Python 網頁框架來快速構建 API。

1. 安裝 Flask

首先,安裝 Flask:

pip install Flask

2. 撰寫一個簡單的 API

在這個範例中,我們將撰寫一個簡單的 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 讓 API 公開訪問

ngrok 是一個可以讓你本地開發的伺服器暴露給網路的工具。它會創建一個公開的 URL,並將該 URL 對應到你的本地伺服器。

1. 安裝 ngrok

首先到 ngrok 官網 下載並安裝 ngrok。

2. 啟動 Flask 伺服器

在終端執行以下指令來啟動 Flask 伺服器:

python app.py

這會啟動伺服器在 localhost:5000 上運行。

3. 啟動 ngrok

在另一個終端中,運行以下指令來啟動 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 失敗怎麼辦?

若您在啟動 ngrok 時遇到的 Error 如下:

ERROR: authentication failed: Usage of ngrok requires a verified account and authtoken.

代表你在嘗試啟動 ngrok 的 HTTP tunnel 時,ngrok 無法驗證你的帳戶,因為還沒有配置 authtoken。ngrok 要求每個使用者都要註冊一個帳戶並綁定一個 authtoken 才能使用。解決此問題的方法如下:

一、註冊 ngrok 帳戶

  1. 到 ngrok 的註冊頁面創建一個帳戶。
  2. 完成註冊後,登錄到 ngrok 儀表板。

二、獲取你的 Authtoken

  1. 登錄後,到 Your Authtoken 頁面。

  2. 你會看到一個類似於這樣的命令:這裡的 YOUR_AUTHTOKEN 是你個人帳戶的令牌。

    ngrok config add-authtoken YOUR_AUTHTOKEN
    

    https://ithelp.ithome.com.tw/upload/images/20240919/20167760ofvGXMxxAr.png

三、配置 Authtoken

在終端中運行:

ngrok config add-authtoken YOUR_AUTHTOKEN

四、啟動 ngrok tunnel

在成功配置了 authtoken 後,重新運行 ngrok tunnel:

ngrok http 5000

這樣,ngrok 將會在本地的 localhost:5000 創建一個公開的 URL,並且可以被外部訪問。

備註:

authtoken 只需配置一次,之後 ngrok 每次都會自動使用這個令牌。


上一篇
[DAY 28]AutoML實戰:如何利用貝葉斯優化找到超參數最佳解?
下一篇
[DAY 30]打造全面的API:身份驗證、Swagger文件、請求次數限制
系列文
30 天程式學習筆記:我的自學成長之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言