apiwrappers是一个用于构建同时使用常规和异步代码的API客户端的库

apiwrappers的Python项目详细描述


Build StatusDocumentation StatusCoverage StatusChecked with mypyPyPI Package latest releaseSupported versionsMIT Licenseapiwrappers是一个用于构建API客户端的库 它同时适用于常规和异步代码。在

特点

  • DRY-通过一个实现同时支持常规和异步代码

  • Flexible-定制请求/响应的中间件机制

  • Typed-库是完全类型化的,而且相对容易 获取完整类型的包装

  • Modern-不费力地使用数据类和类型注释解码JSON

  • Unified interface-使用不同的python HTTP客户端库 以同样的方式。当前支持:

安装

pip install 'apiwrappers[aiohttp,requests]'

注意:附加功能主要用于API客户端的最终用户

快速启动

提出请求相当简单:

^{pr2}$

编写一个简单的API客户端

使用apiwrappers可以为不同的API引导客户机 很快很容易。在

下面是典型的API客户端的外观:

from__future__importannotationsfromdataclassesimportdataclassfromtypingimportAwaitable,Generic,List,TypeVar,overloadfromapiwrappersimportAsyncDriver,Driver,Request,Url,fetchT=TypeVar("T",Driver,AsyncDriver)@dataclassclassRepo:id:intname:strclassGitHub(Generic[T]):def__init__(self,host:str,driver:T):self.url=Url(host)self.driver:T=driver@overloaddefget_repos(self:Github[Driver],username:str)->List[Repo]:...@overloaddefget_repos(self:Github[AsyncDriver],username:str)->Awaitable[List[Repo]]:...defget_repos(self,username:str):url=self.url("/users/{username}/repos",username=username)request=Request("GET",url)returnfetch(self.driver,request,model=List[Repo])

这是一个小型的,但完全类型化的API客户机 api.github.com获取所有用户repo的端点 按用户名:

这里我们定义了Repodataclass来描述我们想要的 从response获取并将其传递给fetch函数。 fetch然后将发出一个请求并对该类型强制转换响应。在

请注意我们如何创建URL:

url=self.url("/users/{username}/repos",username=username)

例如,有一个有用的模板,例如 或者用于聚合度量,所以我们不立即格式化 提供模板和替换字段。在

使用API客户端

以下是我们如何使用它:

>>>fromapiwrappersimportmake_driver>>>driver=make_driver("requests")>>>github=GitHub("https://api.github.com",driver=driver)>>>github.get_repos("unmade")[Repo(id=47463599,name='am-date-picker'),Repo(id=231653904,name='apiwrappers'),Repo(id=144204778,name='conway'),...]

要在asyncio中使用它,我们需要做的就是提供一个合适的驱动程序 别忘了await方法调用:

使用IPython或python3.8+和Python-m asyncio 以_交互_方式_尝试_此_代码_ <_eem_>_

>>>fromapiwrappersimportmake_driver>>>driver=make_driver("aiohttp")>>>github=GitHub("https://api.github.com",driver=driver)>>>awaitgithub.get_repos("unmade")[Repo(id=47463599,name='am-date-picker'),Repo(id=231653904,name='apiwrappers'),Repo(id=144204778,name='conway'),...]

文件

有关apiwrappers的文档可以在 Read The Docs。在

退房Extended Client Example。在

贡献

欢迎投稿,并非常感谢!每 一点帮助也很少。在

请参见contributing guide了解更多信息。在

目前代码和问题托管在GitHub上。在

该项目由麻省理工学院授权。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用prepared语句在oracle中插入日期   对点具有双重值的java   使用多个通配符的java请求映射   java Springboot为什么要设置springbootstartertomcat   除了对JavaBean的请求之外,还使用servletContext的servlet   java如何清除OCSID。返回到池的连接时的CLIENTID JDBC客户端信息属性   将整型数组转换为光栅Java   java使用对象引用作为互斥锁   java为什么在编程语言中使用sin函数返回奇怪的sin值不像计算器   java如何将JButton链接到对象并调用相关方法   php用Java发送POST数据   导航属性的java模拟加载   java多个活动错误Android试图对空对象引用调用虚拟方法“”   java Android更改ActionBar文本颜色   如何使用带有java反射且不带开关的parant引用创建子类