Sensei memudahkan proses mencipta Klien API dengan mengendalikan penghalaan, pengesahan data dan pemetaan respons secara automatik. Ini mengurangkan kerumitan permintaan HTTP, menjadikannya lebih mudah untuk menyepadukan API ke dalam projek anda tanpa menulis kod boilerplate.
Sensei menggunakan pembayang jenis untuk menjana klien API, menyediakan antara muka yang jelas dan pengesahan yang teguh untuk berinteraksi dengan API. Sintaksnya sangat serupa dengan rangka kerja 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", ...)
Apabila Sensei tidak tahu cara mengendalikan permintaan, anda boleh melakukannya sendiri, menggunakan prapemprosesan sebagai penyediaan dan pasca pemprosesan sebagai akhir
Sensei: Ia menyediakan tahap abstraksi yang tinggi. Sensei memudahkan mencipta pembalut API, menawarkan penghias untuk penghalaan mudah, pengesahan data dan pemetaan automatik respons API kepada model. Ini mengurangkan boilerplate dan meningkatkan kebolehbacaan dan kebolehselenggaraan kod.
Klien HTTP Kosong: Pelanggan HTTP kosong seperti permintaan atau httpx memerlukan mengurus permintaan secara manual, mengendalikan penghuraian respons, pengesahan data dan pengendalian ralat. Anda perlu menulis kod berulang untuk setiap titik akhir.
Sensei menyediakan ciri yang berguna untuk API standard dan tidak kemas:
Pembangun Bekerja dengan API, Saintis Data dan Penganalisis, dsb.
Atas ialah kandungan terperinci Sensei: Permudahkan Penjanaan Pelanggan API. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!