Heim > Artikel > Backend-Entwicklung > Sensei: Vereinfachen Sie die API-Client-Generierung
Sensei vereinfacht den Prozess der Erstellung von API-Clients, indem Routing, Datenvalidierung und Antwortzuordnung automatisch durchgeführt werden. Dies reduziert die Komplexität von HTTP-Anfragen und erleichtert die Integration von APIs in Ihre Projekte, ohne Boilerplate-Code schreiben zu müssen.
Sensei verwendet Typhinweise, um API-Clients zu generieren und bietet so klare Schnittstellen und eine robuste Validierung für die Interaktion mit APIs. Seine Syntax ist dem Framework FastAPI
sehr ähnlichfrom 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", ...)
Wenn Sensei nicht weiß, wie er mit einer Anfrage umgehen soll, können Sie es selbst tun, indem Sie die Vorverarbeitung als Vorbereitung und die Nachverarbeitung als Abschluss verwenden
Sensei: Es bietet ein hohes Maß an Abstraktion. Sensei vereinfacht die Erstellung von API-Wrappern und bietet Dekoratoren für einfaches Routing, Datenvalidierung und automatische Zuordnung von API-Antworten zu Modellen. Dies reduziert den Boilerplate und verbessert die Lesbarkeit und Wartbarkeit des Codes.
Barer HTTP-Client: Ein bloßer HTTP-Client wie Requests oder httpx erfordert die manuelle Verwaltung von Anfragen, die Antwortanalyse, die Datenvalidierung und die Fehlerbehandlung. Sie müssen für jeden Endpunkt sich wiederholenden Code schreiben.
Sensei bietet Funktionen, die sowohl für Standard-APIs als auch für unübersichtliche APIs nützlich sind:
Entwickler, die mit APIs arbeiten, Datenwissenschaftler und Analysten usw.
Das obige ist der detaillierte Inhalt vonSensei: Vereinfachen Sie die API-Client-Generierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!