首頁 > 後端開發 > Python教學 > Sensei:簡化 API 用戶端生成

Sensei:簡化 API 用戶端生成

Patricia Arquette
發布: 2024-11-26 07:04:12
原創
660 人瀏覽過

Sensei: Simplify API Client Generation

Sensei 透過自動處理路由、資料驗證和回應對應來簡化建立 API 用戶端的流程。這降低了 HTTP 請求的複雜性,使您可以更輕鬆地將 API 整合到您的專案中,而無需編寫樣板程式碼。

Sensei 使用類型提示來產生 API 用戶端,為與 API 互動提供清晰的介面和強大的驗證。它的語法與框架FastAPI

非常相似
  • 文件:https://sensei.crocofactory.dev
  • 原始碼:https://github.com/CrocoFactory/sensei

程式碼範例

from typing import Annotated
from sensei import Router, Path, APIModel

router = Router('https://pokeapi.co/api/v2/')


class Pokemon(APIModel):
    name: str
    id: int
    height: int
    weight: int


@router.get('/pokemon/{name}')
def get_pokemon(name: Annotated[str, Path(max_length=300)]) -> Pokemon: 
    pass

pokemon = get_pokemon(name="pikachu")
print(pokemon) # Pokemon(name='pikachu'>



<p>Didn't it seem to you that the function doesn't contain the code? <strong>Sensei writes it instead of you!</strong> The result of the call get_pokemon(name="pikachu") is the object Pokemon(name='pikachu'>

</p><p>There is a wonderful OOP approach proposed by Sensei:<br>
</p>

<pre class="brush:php;toolbar:false">class User(APIModel):
    email: EmailStr
    id: PositiveInt
    first_name: str
    last_name: str
    avatar: AnyHttpUrl

    @classmethod
    @router.get('/users')
    def query(
            cls,
            page: Annotated[int, Query()] = 1,
            per_page: Annotated[int, Query(le=7)] = 3
    ) -> list[Self]:
        pass

    @classmethod
    @router.get('/users/{id_}')
    def get(cls, id_: Annotated[int, Path(alias='id')]) -> Self: 
        pass

    @router.post('/token')
    def login(self) -> str: 
        pass

    @login.prepare
    def _login_in(self, args: Args) -> Args:
        args.json_['email'] = self.email
        return args

    @login.finalize
    def _login_out(self, response: Response) -> str:
        return response.json()['token']

user = User.get(1)
user.login() # User(id=1, email="john@example.com", first_name="John", ...)
登入後複製

當Sensei不知道如何處理請求時,你可以自己處理,使用預處理作為prepare,後處理作為finalize

比較

Sensei:它提供了高水準的抽象。 Sensei 簡化了 API 包裝器的創建,提供了輕鬆路由、資料驗證以及將 API 回應自動對應到模型的裝飾器。這減少了樣板檔案並提高了程式碼的可讀性和可維護性。

裸 HTTP 用戶端:像 requests 或 httpx 這樣的裸 HTTP 用戶端需要手動管理請求、處理回應解析、資料驗證和錯誤處理。您必須為每個端點編寫重複的程式碼。

特徵

Sensei 提供了對標準 API 和混亂 API 都有用的功能:

  1. 驗證? ️
  2. 速率限制處理 ⏳
  3. 自動處理回傳類型?
  4. 沒有重複的 DRY 架構?
  5. 非同步支援⚡
  6. 大小寫轉換和別名?
  7. 擁有快速請求的客戶端?

目標受眾

使用 API 的開發人員、資料科學家和分析師等

以上是Sensei:簡化 API 用戶端生成的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板