restful api框架支持hateoas,并与flask、django、sqlalchemy等兼容。
ripozo的Python项目详细描述
ripozo是构建restful/hateoas/hypermediaapi的工具。它提供了 强大,简单,完全合格的资源之间的链接,暴露的能力 资源上的可用操作和必要参数,以及公开 多个休息协议(即警报器和哈尔)。最后,ripozo是高度可扩展的。 它能够与任何web框架或数据库集成,并且您可以轻松地推出 你自己的休息协议。
为什么要用里波佐?
- 强烈支持资源间链接(hateoas/hypermedia)
- 快速开发(特别是在使用扩展时,如烧瓶Ripozo或Django Ripozo)
- 能够从Web API公开对资源的操作(自我发现)
示例
您需要使用包含的调度器之一创建调度器 在框架扩展中。您可以在 The ripozo ecosystem部分。如果它不在那里,你总是可以推出自己的。
最小值
fromripozoimportapimethod,adapters,ResourceBase# import the dispatcher class for your preferred webframeworkclassMyResource(ResourceBase):@apimethod(methods=['GET'])defsay_hello(cls,request):returncls(properties=dict(hello='world'))# initialize the dispatcher for your framework# e.g. dispatcher = FlaskDispatcher(app)dispatcher.register_adapters(adapters.SirenAdapter,adapters.HalAdapter)dispatcher.register_resources(MyResource)
就像这样,你有一个api可以返回siren或hal 格式化响应。很简单,对吧?
满积垢+l
另一方面,如果您想要一个完整的crud+l(create、retrieve、update、delete和list)。 您可以使用其中一个管理器扩展(django-ripozo,ripozo-sqlalchemy,和ripozo-cassandraall 包括随时可用的基本管理器)。有细微差别 在不同的扩展中创建管理器类和实例,但在核心上它们都遵循以下原则 格式。
fromripozoimportrestmixinsfromfake_ripozo_extensionimportManagerfrommyapp.modelsimportMyModel# An ORM model for example a sqlalchemy or Django model.classMyManager(Manager):fields=('id','field1','field2',)model=MyModelclassMyResource(restmixins.CRUDL):manager=MyManager()pks=('id',)# Create your dispatcher and register the resource...重要的是要注意,每一个都有RestMyxin。 个体CRUD+L(即RestMyxin。 可以混合并与你的快乐相匹配的行为。
链接
Ripozo最酷的部分是能够在 资源。
fromripozoimportrestmixins,RelationshipclassMyResource(restmixins.CRUDL):manager=MyManager()pks=('id',)_relationships=[Relationship('related',relation='RelatedResource')]classRelatedResource(restmixins.CRUDL)manager=RelatedManager()pks=('id',)
现在,每当您请求myresource时,您将得到指向 相关资源。
文档
里波佐生态系统
目前,Ripozo已与Django、Flask、SqlAlchemy集成, 和卡桑德拉(通过cqlengine)。提供了文档链接 下面。
Frameworks | Databases |
---|---|
flask-ripozoripozo-sqlalchemy | |
django-ripozoripozo-cassandra |
为里波佐建了一个分机?让我们知道,我们会在这里添加它!
安装
pip install ripozo
版本控制
在版本1.0.0之前,ripozo版本控制遵循sentimental versioning。1.0.0之后的版本 标准的major.minor.patch样式。
- 修补程序:前后兼容
- 小调:向后兼容
- 专业:无担保
贡献
想帮忙吗?我们会喜欢的!Github将是Ripozo的开发中心。 如果您有任何问题、意见或投诉,请将其张贴在那里。另外,我们 肯定会接受拉取请求(提示:我们几乎总是喜欢更多的测试和 文件)。我们只有几个请求:
- 每个方法、函数和类都应该有一个完整的docstring
- 每个函数和方法至少应有一个单元测试
- 将请求保留到一个问题。(最好先在github上打开一个问题进行记录)
名字后面
里波佐在世界语中翻译为“休息”。世界语被设计成一种通用语言。任何人, 不管他们的母语是什么,都能很容易地学习和使用。同样,里波佐的意图 成为一个通用的rest框架。无论您对数据库、web框架或 协议,Ripozo使它易于构建。