通过http api访问python对象的瓶子包装器
nimrodel的Python项目详细描述
尼姆罗德尔
一个简单的bottle.py包装器,提供对任何python对象的http api访问。
要求
快速启动
使用安装
pip install nimrodel
使用
fromnimrodelimportAPImyapi=API()
您可以选择使用port=42
传递端口号,使用path="api"
传递路径,以及是否要在IPv4上服务(IPv6=False
)。
你也可以给API对象一个现有的瓶子服务器(^ {< CD4}}),在这种情况下,你的API将被服务在现有服务器上。强烈建议还传递一个路径变量来将api与服务器的常规路由分离。
您还可以传递一个带有parsedoc=yourfunction
的自定义函数,该函数将方法作为输入,并返回一个字典,其中值为desc
表示函数描述,值为params
表示映射到字典的参数名字典,值为returns
表示返回值字典。返回字典和参数字典都可以分别具有数据类型和描述的键type
和desc
。默认情况下,nimrodel将尝试根据rest标准(sphinx)解析docstring。
然后使用decorator访问任何类。
@myapi.apiclass("group")classGroup:def__init__(self,name,apipath,songs):# some stuffself.__apiname__=apipath
该类的任何实例现在都可以通过类路径及其单独路径的组合进行访问。现在只是装饰方法。它的所有参数都可以通过uri查询参数传递。
@myapi.get("songs")defget_songs(self,member):return{"songs":[s["title"]forsinself.songsifmemberins["performers"]]}
现在创建一个对象并确保它有一个__apiname__
属性:
e=Group("Exid","exid",exidsongs)
然后您可以通过简单的http调用来访问它的方法,比如/group/exid/songs?member=Junghwa
。
在/api_explorer
下面还有一个集成的图形api浏览器。
nimrodel还允许您使用类EAPI
创建一个简单的基于函数的api。
有关这些可能性的更深入的探索,请参阅存储库中包含的文件example.py
。