網(wǎng)站客服托管百度廣告聯(lián)盟下載
在本文中,我們將介紹如何使用?FastAPI和uvicorn來同時運行HTTP和HTTPS的?Python應(yīng)用程序。
簡介
FastAPI是一個高性能的Web框架,可以用于構(gòu)建快速、可靠的API。它基于Python的類型提示和異步支持,使得開發(fā)者可以輕松地編寫出安全且高效的代碼。而uvicorn是一個用于ASGI應(yīng)用的服務(wù)器,它可以快速啟動并運行Python應(yīng)用程序。
準備工作
在開始之前,我們需要安裝FastAPI和uvicorn??梢允褂胮ip命令來安裝它們:
pip install fastapi uvicorn
配置HTTP服務(wù)器
首先,我們需要創(chuàng)建一個Python文件,并導(dǎo)入所需的庫和模塊:
from fastapi import FastAPIapp = FastAPI()@app.get("/")
def read_root():return {"Hello": "World"}
在上述代碼中,我們創(chuàng)建了一個FastAPI實例,并定義了一個根路徑的路由。這個路由將接收GET請求,并返回一個包含”Hello: World”的JSON響應(yīng)。
接下來,我們可以使用uvicorn來啟動HTTP服務(wù)器,并監(jiān)聽一個指定的端口。例如,以下代碼將在本地的8000端口上啟動HTTP服務(wù)器:
uvicorn main:app --reload --port 8000
通過訪問http://localhost:8000,您將看到”Hello: World”的響應(yīng)。
配置HTTPS服務(wù)器
要配置HTTPS服務(wù)器,我們需要生成SSL證書??梢允褂肙penSSL來生成自簽名的證書。
首先,打開終端并執(zhí)行以下命令以生成私鑰:
openssl genrsa -out private.key 2048
然后,執(zhí)行以下命令以生成CSR(證書簽名請求):
openssl req -new -key private.key -out server.csr
接下來,執(zhí)行以下命令以生成自簽名的證書:
openssl x509 -req -days 365 -in server.csr -signkey private.key -out certificate.crt
現(xiàn)在,我們已經(jīng)生成了私鑰和證書文件。接下來,我們需要將它們放置在我們的Python項目中,并將其配置到uvicorn中。
在上述示例中,我們可以使用以下代碼將證書和私鑰加載到?FastAPI應(yīng)用程序中:
import oscert_file = os.path.join(os.path.dirname(os.path.realpath(__file__)), "certificate.crt")
key_file = os.path.join(os.path.dirname(os.path.realpath(__file__)), "private.key")if os.path.isfile(cert_file) and os.path.isfile(key_file):app.certfile = cert_fileapp.keyfile = key_file
將以上代碼添加到我們之前的示例中,并將FastAPI實例命名為app
。
現(xiàn)在,我們可以使用以下命令來啟動HTTPS服務(wù)器,并監(jiān)聽一個指定的端口。例如,以下代碼將在本地的8443端口上啟動HTTPS服務(wù)器:
uvicorn main:app --reload --port 8443 --ssl-keyfile private.key --ssl-certfile certificate.crt
通過訪問?https://localhost:8443,您將看到相同的”Hello: World”響應(yīng),并且瀏覽器將顯示證書的有效性。
總結(jié)
在本文中,我們介紹了如何使用FastAPI和uvicorn來同時運行HTTP和HTTPS的Python應(yīng)用程序。通過配置HTTP服務(wù)器和生成SSL證書,我們可以在快速和安全的環(huán)境中開發(fā)和部署Web應(yīng)用程序。FastAPI和uvicorn的組合讓我們能夠輕松構(gòu)建高性能的API,并提供強大的異步支持。希望這篇文章對你有所幫助!
原文鏈接
?