Sensei simplifie le processus de création de clients API en gérant automatiquement le routage, la validation des données et le mappage des réponses. Cela réduit la complexité des requêtes HTTP, facilitant ainsi l'intégration d'API dans vos projets sans écrire de code passe-partout.
Sensei utilise des indices de type pour générer des clients API, fournissant des interfaces claires et une validation robuste pour interagir avec les API. Sa syntaxe est très similaire au framework FastAPI
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", ...)
Lorsque Sensei ne sait pas comment gérer une demande, vous pouvez le faire vous-même, en utilisant le prétraitement pour préparer et le post-traitement pour finaliser
Sensei : Il offre un haut niveau d'abstraction. Sensei simplifie la création de wrappers d'API, en proposant des décorateurs pour faciliter le routage, la validation des données et le mappage automatique des réponses de l'API aux modèles. Cela réduit le passe-partout et améliore la lisibilité et la maintenabilité du code.
Client HTTP nu : Un client HTTP nu comme les requêtes ou httpx nécessite la gestion manuelle des requêtes, la gestion de l'analyse des réponses, la validation des données et la gestion des erreurs. Vous devez écrire du code répétitif pour chaque point de terminaison.
Sensei fournit des fonctionnalités utiles pour les API standard et compliquées :
Développeurs travaillant avec des API, data scientists et analystes, etc.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!