Flask Restful搜索查询

2024-10-01 11:42:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经把我的Flask API从neurtive迁移到Restful。 Flask search query not using filters

有没有一种方法可以从客户端执行类似于Flask untillet的搜索查询? http://flask-restless.readthedocs.org/en/latest/searchformat.html

它们在curl请求中使用以下格式:

{"name": <fieldname>, "op": <operatorname>, "val": <argument>}

Tags: 方法apirestfulhttp客户端flasksearchnot
2条回答

flask-restless的描述所述,生成的api以JSON格式发送和接收消息,因此您必须以JSON格式发送查询

所以对于我来说,我获取了查询字符串,并在一个预处理器函数中解析它,以便在搜索过滤器中添加参数

def get_many_preprocessor(search_params=None, **kw):
l=[]
for i in request.args.to_dict() : 
    if i == 'q' :
        break 
    else : 
        l.append( {u'name' :str(i) , u'op': u'eq' , u'val':request.args[i]})
if len(l)>0 :
    # print len(l)
    search_params['filters']=l
print search_params 

然后把预处理器添加到我的管理器中

^{pr2}$

我的想法是,无论我得到的查询包含参数,我都会手动将它们添加到包含过滤器的search_params中。在

您可以在official doc中找到更多信息。在

祝你好运,为我糟糕的英语道歉

flaskrestful并没有破坏API,因为它没有任何与数据库的内置连接。你得自己写逻辑。这里有一种可能的方法。在

class UserSearch(Resource):
    def get(self, search_term):
        results = User.query.filter(User.name.like('%'+search_term+'%')).all()

        # serialize and return items...

api.add_resource(UserSearch, '/users/search/<search_term>')

相关问题 更多 >