在現代Web應用程序開發中,Web API(應用程序介面)的建設已成為下一代Web應用程序的關鍵要素。一般來說,Web API是一種在Web應用程序上發布和調用的編程介面,允許與Web應用程序交互的不同工具、服務和應用程序之間的數據交換。Python RapidAPIs是一個流行的Python庫,主要用於快速構建RESTful API服務。它使創建Web API變得非常簡便,無論是初學者還是有經驗的開發人員都可以使用Python RapidAPIs來開發高效、健壯的Web服務,並輕鬆部署到伺服器。接下來,我們將從多個方面詳細介紹Python RapidAPIs的功能和用法。
一、安裝和基本使用
首先,我們需要使用pip安裝Python RapidAPIs庫:
pip install rapidapi
一旦完成安裝,我們可以開始使用它來創建RESTful API服務。下面是一個基本的示例,我們使用FastAPI和Python RapidAPIs庫,並創建一個簡單的RESTful API服務,以便演示Python RapidAPIs的用法:
from fastapi import FastAPI
from rapidapi import RapidAPI
app = FastAPI()
rapid = RapidAPI(app)
books = [
{"id": 1, "title": "The Alchemist", "author": "Paulo Coelho"},
{"id": 2, "title": "The Little Prince", "author": "Antoine de Saint-Exupéry"},
]
@rapid.route("/books")
async def get_books():
return books
@rapid.route("/books/{book_id}")
async def get_book_by_id(book_id: int):
for book in books:
if book["id"] == book_id:
return book
return {"message": "Book not found"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
在上面的代碼中,我們首先從fastapi模塊導入FastAPI,然後從rapidapi模塊導入RapidAPI。在這個例子中,我們創建了一個名為books的字典,然後為兩個路由定義了函數get_books()和get_book_by_id()。這些函數分別使用裝飾器@rapid.route()裝飾,使它們可以使用Python RapidAPIs庫的功能,以便快速地將這些函數轉化為Web API路由。最後,在if __name__ == “__main__”語句塊中,我們使用uvicorn運行這個應用程序並將其監聽在主機0.0.0.0和埠8000上。
啟動應用程序後,我們可以在瀏覽器或使用HTTP客戶端(例如curl)上訪問這兩個路由。例如,如果我們訪問/books URL,就會返回以下結果:
[
{"id": 1, "title": "The Alchemist", "author": "Paulo Coelho"},
{"id": 2, "title": "The Little Prince", "author": "Antoine de Saint-Exupéry"}
]
如果我們訪問/books/1路由,則將返回具有ID 1的特定書籍:
{"id": 1, "title": "The Alchemist", "author": "Paulo Coelho"}
二、使用RapidAPI類的高級功能
Python RapidAPIs類具有許多有用的高級功能,例如:
訪問參數和查詢參數
新增訪問參數和查詢參數是快速創建高級Web API應用程序的必備技能。我們可以在Python RapidAPIs中輕鬆實現這些功能。例如,假設我們希望創建一個查詢books列表的新URL,該列表將基於作者返回書籍。我們可以使用FastAPI的query參數,如下所示:
@rapid.route("/books_by_author")
async def get_books_by_author(author: str):
selected_books = []
for book in books:
if book["author"] == author:
selected_books.append(book)
return selected_books
在這個例子中,我們使用裝飾器@rapid.route()定義了新路由/books_by_author。在這個路由中,我們使用了FastAPI的query參數author,以查找所有屬於給定作者的書籍,並將這些書籍作為JSON數組返回給客戶端。要使用這個URL,我們不需要設置任何單獨的參數。相反,我們只需向/books_by_author URL添加一個查詢參數author,就可以實現通過作者檢索書籍的功能,如下所示:
http://localhost:8000//books_by_author?author=Paulo%20Coelho
在上面的示例中,我們使用名稱為「Paulo Coelho」的作者作為查詢參數,通過將它作為請求的一部分來向/web_by_author URL發送HTTP GET請求。這將導致Python RapidAPIs傳遞查詢參數到get_books_by_author()函數,並自動根據數據類型轉換值類型。此外,它還將自動驗證查詢參數,並在必要時返回驗證錯誤。
優化性能
在Python RapidAPIs中,我們可以使用@rapid.cache()裝飾器提高API的性能。這個裝飾器可以將函數的輸出緩存提供一定的有效時間,避免同樣的函數重複調用。例如,如果我們的API需要從遠程Web伺服器獲取大量的數據,而這些數據不容易改變,則可以使用此裝飾器。
@rapid.cache(expire=86400)
def get_remote_data():
... # 獲取遠程數據
return data
在上面的代碼片段中,我們使用@rapid.cache(expire=86400)裝飾器將get_remote_data()函數的輸出緩存一整天(即86400秒)
路由保護
Python RapidAPIs還包括路由保護的功能,這可以通過兩種方式實現:使用JWT令牌或使用API密鑰進行身份驗證。JWT令牌是一種用於Web應用程序中對用戶進行身份驗證的流行方式。它是一種安全的標準,因為JWT令牌可以從Web API中的每個請求中傳遞,並且不能偽造。使用Python RapidAPIs和FastAPI,我們可以輕鬆地創建和驗證JWT令牌。
在Python RapidAPIs中,我們使用@rapid.auth_required()裝飾器定義需要身份驗證的函數。下面是一個Python RapidAPIs調用一個需要身份驗證的函數的示例:
@rapid.auth_required()
@rapid.route("/secure_hello_world")
async def get_secure_hello_world():
return {"message": "Hello World! This is a secure route."}
在這個示例中,我們將需要身份驗證的函數get_secure_hello_world()裝飾為@rapid.auth_required()。這樣,只有具有有效JWT令牌的請求才能訪問該路由。在每個請求中,Python RapidAPIs將自動驗證JWT令牌,以確保該請求是安全的。
三、集成Swagger UI和Redoc
在開發Web API時,文檔是非常重要的,因為它可以幫助其他開發人員了解如何使用Web API。RapidAPI使集成Swagger UI和Redoc變得非常容易,這兩個工具是專門為創建和展示高質量API文檔而設計的。
首先,我們需要安裝相應的包:
pip install -U fastapi[all]
上面的命令將安裝FastAPI和其它必需的依賴項。然後,我們需要從FastAPI和Rapid API中導入SwaggerUI和ReDoc類:
from rapidapi import RapidAPI, ReDoc, SwaggerUI
from fastapi import FastAPI
app = FastAPI()
rapid = RapidAPI(app)
swag = SwaggerUI(app)
redoc = ReDoc(app)
接下來,我們需要定義我們的路由。我們可以使用Python RapidAPIs的裝飾器@rapid.route()將FastAPI路由轉換為Python RapidAPIs路由。下面是一個簡單的示例:
@rapid.route('/my_route')
async def my_route():
return {"message": "Hello World!"}
if __name__ == '__main__':
import uvicorn
# 並發有價,可用pypy取代CPython
uvicorn.run(app, host='0.0.0.0', port=8000)
最後,我們需要向我們的應用程序添加SwaggerUI和Redoc。我們可以在FastAPI應用程序中添加多個中間件,而這些中間件可以很容易地添加到應用程序中,並且不會影響Web API的性能。下面是一個完整的FastAPI和Python RapidAPIs應用程序,包括Swagger UI和Redoc:
from rapidapi import RapidAPI, ReDoc, SwaggerUI
from fastapi import FastAPI
app = FastAPI()
rapid = RapidAPI(app)
swag = SwaggerUI(app)
redoc = ReDoc(app)
@rapid.route('/my_route')
async def my_route():
return {"message": "Hello World!"}
if __name__ == '__main__':
import uvicorn
# 並發有價,可用pypy取代CPython
uvicorn.run(app, host='0.0.0.0', port=8000)
在上面的代碼中,我們分別導入RapidAPI、SwaggerUI和ReDoc類。接下來,我們創建一個新的FastAPI應用程序並將其分配給變數app。然後,我們將創建的FastAPI應用程序傳遞給RapidAPI、SwaggerUI和ReDoc類的構造函數,以便將這些類作為中間件在FastAPI應用程序中使用。最後,我們定義了一個新的路由/my_route,並使用RapidAPI裝飾器@rapid.route()將其轉換為Python RapidAPIs路由。
最後,啟動FastAPI應用程序,我們可以訪問以下三個URL來實現API文檔的可視化顯示:
http://localhost:8000/docs (Swagger UI)
http://localhost:8000/redoc (Redoc)
在瀏覽器中訪問這些URL,即可查看相應的API文檔和描述。
四、結論
Python RapidAPIs是快速構建Web API的重要工具之一。它提供了許多有用的功能和高級功能,例如路由保護,緩存優化,Swagger UI和Redoc的集成等。Python RapidAPIs易於使用,特別是對於那些熟悉Python和FastAPI框架的開發人員來說。我們相信,通過使用Python RapidAPIs和FastAPI,您可以快速且高效地構建RESTful API服務。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/286884.html