Flask Restful 搜索查询

Flask Restful search query

我已将我的 Flask API 从 Restless 迁移到 Restful。 Flask search query not using filters

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

他们在 curl 请求中使用这种格式:

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

Flask-Restful 不会用魔法消失您的 API,因为它与您的数据库没有任何 built-in 连接。您必须自己编写逻辑。这是一种可行的方法。

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>')

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 

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

manager.create_api(People, methods=['GET', 'POST', 'DELETE','PATCH'],url_prefix='/',preprocessors={ 'GET_MANY': [get_many_preprocessor],})

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

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

祝你好运,抱歉我的英语不好