龙卷风休息API
tornado-alchemy-rest的Python项目详细描述
这个简单的模块为sqlalchemy表创建crud端点。它的 目的是允许快速创建restfulapi,例如 面板。列表终结点支持分页和筛选。是为 Angular的ng admin,所以这个模块支持从 框
安装
pip install tornado-alchemy-rest
用法示例
importtornado.webfromtornado.webimportURLSpecfrom.modelsimportItemTablefromtornado_alchemy_restimportSingleRESTAPIHandler,ListRESTAPIHandlerclassSingleItemHandler(SingleRESTAPIHandler):table=ItemTabledefdelete(self,*args,**kwargs):raiseHTTPError(405)classItemHandler(ListRESTAPIHandler):table=ItemTableapp=tornado.web.Application([URLSpec(prefix(r'items'),ItemHandler,dict(psql=psql_pool),'items'),URLSpec(prefix(r'items/(\d+)'),SingleItemHandler,dict(psql=psql_pool),'single_item'),])
更复杂的示例,您可以重写对象创建方法:
classSingleItemHandler(SingleRESTAPIHandler):table=TableItem@gen.coroutinedefget_object_dict(self,*args):obj=yieldsuper().get_object_dict(*args)cursor=yieldself._execute_query(User.select().where(User.c.id==obj['user_id']))obj['user']=cursor.fetchone()returnobj@gen.coroutinedefput_object_dict(self,id,params):assertparams['value']>5yieldsuper().put_object_dict(id,params)classItemHandler(ListRESTAPIHandler):table=TableItem@gen.coroutinedefget_object_list(self,query):objects=yieldsuper().get_object_list(query)forobjinobjects:cursor=yieldself._execute_query(User.select().where(User.c.id==obj['user_id']))obj['user']=cursor.fetchone()raisegen.Return(objects)@gen.coroutinedefpost_object_dict(self,params):assertparams['value']>5yieldsuper().post_object_dict(params)
查询
要获得按id desc排序的第二页,您需要执行以下查询:
GET /item?_page=2&_perPage=30&_sortField=id&_sortDir=DESC
要获取所有项,其中name包含“test”和type是5并且 value是7或6,您将需要该查询:
GET /item?_filters={"name__contains":"test", "type":5, "value__any":[7,6]}
查询参数
- 页面–页面名称
- 每页–每页行数
- sortfield–要订购的字段
- sortdir–排序方向
- filters–使用给定参数筛选项。当前支持 筛选器为:“(相等)、startswith、contains、icontains、any、ne
加入支持
将在某个时间从两个表返回数据:
classSingleItemHandler(SingleRESTAPIHandler):table=TableItemdefget_from(self):returnself.table.join(TableUser,isouter=True)
要求
龙卷风,炼金术