用于python的异步restful api使用者

finch的Python项目详细描述


finch:restful api使用者

https://secure.travis-ci.org/jaimegildesagredo/finch.png?branch=master

finch是python的异步restful api消费者。finch致力于移除与使用基于http的api相关的所有样板,并提供一个高级抽象来开发api客户机。finch是在Apache 2 license下发布的,因此您可以forkcontributereport errors and suggestions来改进它。

用法

要开始使用rest api,首先应该定义要使用的资源。对于资源建模,我们使用booby数据建模库。因此,例如,要从github.com获取回购协议,您应该定义回购协议模型和回购协议集合。

fromboobyimportModel,fieldsfromfinchimportCollectionclassRepo(Model):id=fields.Integer()name=fields.String()owner=fields.String()is_private=fields.Boolean()defparse(self,body,headers):returnparse_repo(json.loads(body))def__repr__(self):return'Repo({}/{})'.format(self.owner,self.name)classRepos(Collection):model=Repodef__init__(self,username,*args,**kwargs):self.username=usernamesuper(Repos,self).__init__(*args,**kwargs)@propertydefurl(self):return'https://api.github.com/users/{}/repos'.format(self.username)defparse(self,body,headers):return[parse_repo(r)forrinjson.loads(body)]defparse_repo(raw):return{'id':raw['id'],'name':raw['name'],'owner':raw['owner']['login'],'is_private':raw['private']}

现在,您可以获取您的公共回购(以及您的私有回购,如果您已通过身份验证)。

fromtornadoimporthttpclient,ioloopdefon_repos(repos,error):ioloop.IOLoop.instance().stop()iferror:raiseerrorforrepoinrepos:printreporepos=Repos('jaimegildesagredo',httpclient.AsyncHTTPClient())repos.all(on_repos)ioloop.IOLoop.instance().start()

安装

您可以使用pip或easy_install从pypi安装finch的最后一个稳定版本。

$ pip install finch

您还可以从github安装最新的源代码。

$ pip install -e git+git://github.com/jaimegildesagredo/finch.git#egg=finch

测试

要运行finch测试套件,您应该安装开发需求并运行nosetests。

$ pip install -r requirements-devel.txt
$ nosetests tests/unit

状态

Finch正在积极开发中,目前还没有完整的文档。现在您可以阅读这个存储库中的示例和测试,它们是最新的文档。另外,我正在使用finch创建一个完整的api客户端,并创建一个好的文档。

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

推荐PyPI第三方库


热门话题
AmazonS3查找从S3forJava下载的压缩文件的MIME类型   java如何使用Selenium在<span>中查找具有特定文本的元素   python如何使用OpenIEDemo生成自定义三元组。由stanfordnlp提供的java   java遇到“方法不适用”编译错误   java如何使用Mockito在Looper中运行的验证代码。getMainLooper?   类Java目录错误   java在已知其他泛型信息时使用原始类型   java connect()和disconnect()在哪里实现?   java使用PDF Box库拆分PDF,生成的PDF几乎与源PDF文件大小相同   java PowerMockito返回错误的对象   java如何找到TIBCO集合消息的字节编码?   java Basic音乐播放器下一步和上一步按钮   添加模块描述符时,java没有名为“entityManagerFactory”的bean可用   java为什么我的代码不是线程安全的?   eclipse java。引用项目中的类的lang.NoClassDefFoundError