>백엔드 개발 >파이썬 튜토리얼 >Sensei: API 클라이언트 생성 단순화

Sensei: API 클라이언트 생성 단순화

Patricia Arquette
Patricia Arquette원래의
2024-11-26 07:04:12607검색

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: 높은 수준의 추상화를 제공합니다. Sensei는 API 래퍼 생성을 단순화하고 쉬운 라우팅, 데이터 검증 및 모델에 대한 API 응답 자동 매핑을 위한 데코레이터를 제공합니다. 이렇게 하면 상용구가 줄어들고 코드 가독성과 유지 관리성이 향상됩니다.

Bare HTTP 클라이언트: 요청이나 httpx와 같은 베어 HTTP 클라이언트에는 수동으로 요청 관리, 응답 구문 분석 처리, 데이터 검증 및 오류 처리가 필요합니다. 엔드포인트마다 반복적인 코드를 작성해야 합니다.

특징

Sensei는 표준 API와 지저분한 API 모두에 유용한 기능을 제공합니다.

  1. 검증 ?️
  2. 속도 제한 처리 ⏳
  3. 반환 유형 자동 처리 ?
  4. 중복 없는 DRY 아키텍처 ?
  5. 비동기 지원 ⚡
  6. 대소문자 변환 및 별칭 ?
  7. 빠른 요청을 위한 자체 클라이언트?

대상 고객

API 작업을 하는 개발자, 데이터 과학자, 분석가 등

위 내용은 Sensei: API 클라이언트 생성 단순화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.