快速構建Web API:Python RapidAPIs庫介紹

在現代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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-23 03:49
下一篇 2024-12-23 03:49

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29

發表回復

登錄後才能評論