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 都有用的功能:
- 验证?️
- 速率限制处理 ⏳
- 自动处理返回类型?
- 没有重复的 DRY 架构?
- 异步支持⚡
- 大小写转换和别名?
- 拥有快速请求的客户端?
目标受众
使用 API 的开发人员、数据科学家和分析师等
以上是Sensei:简化 API 客户端生成的详细内容。更多信息请关注PHP中文网其他相关文章!

Python是解释型语言,但也包含编译过程。1)Python代码先编译成字节码。2)字节码由Python虚拟机解释执行。3)这种混合机制使Python既灵活又高效,但执行速度不如完全编译型语言。

useeAforloopWheniteratingOveraseQuenceOrforAspecificnumberoftimes; useAwhiLeLoopWhenconTinuingUntilAcIntiment.ForloopSareIdeAlforkNownsences,而WhileLeleLeleLeleLoopSituationSituationSituationsItuationSuationSituationswithUndEtermentersitations。

pythonloopscanleadtoerrorslikeinfiniteloops,modifyingListsDuringteritation,逐个偏置,零indexingissues,andnestedloopineflinefficiencies

forloopsareadvantageousforknowniterations and sequests,供应模拟性和可读性;而LileLoopSareIdealFordyNamicConcitionSandunknowniterations,提供ControloperRoverTermination.1)forloopsareperfectForeTectForeTerToratingOrtratingRiteratingOrtratingRitterlistlistslists,callings conspass,calplace,cal,ofstrings ofstrings,orstrings,orstrings,orstrings ofcces

pythonisehybridmodelofcompilationand interpretation:1)thepythoninterspretercompilesourcececodeintoplatform- interpententbybytecode.2)thepytythonvirtualmachine(pvm)thenexecuteCutestestestesteSteSteSteSteSteSthisByTecode,BelancingEaseofuseWithPerformance。

pythonisbothinterpretedAndCompiled.1)它的compiledTobyTecodeForportabilityAcrosplatforms.2)bytecodeisthenInterpreted,允许fordingfordforderynamictynamictymictymictymictyandrapiddefupment,尽管Ititmaybeslowerthananeflowerthanancompiledcompiledlanguages。

在您的知识之际,而foroopsareideal insinAdvance中,而WhileLoopSareBetterForsituations则youneedtoloopuntilaconditionismet

ForboopSareSusedwhenthentheneMberofiterationsiskNownInAdvance,而WhileLoopSareSareDestrationsDepportonAcondition.1)ForloopSareIdealForiteratingOverSequencesLikelistSorarrays.2)whileLeleLooleSuitableApeableableableableableableforscenarioscenarioswhereTheLeTheLeTheLeTeLoopContinusunuesuntilaspecificiccificcificCondond


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具