Python Eve包含过滤器

时间:2014-04-16 00:59:53

标签: python rest flask eve

有哪些方法可以返回字段包含某些值的项目?例如

GET /people?contains="foo"

归还所有拥有“foo”字样的人。在名称中。

提前致谢

2 个答案:

答案 0 :(得分:13)

您可以使用mongodb $regex运算符,默认情况下会在Eve(MONGO_QUERY_BLACKLIST = ['$where', '$regex'])中列入黑名单。

MONGO_QUERY_BLACKLIST = ['$where']添加到settings.py。然后,您可以像这样查询您的API:

?where={"name": {"$regex": ".*foo.*"}}

但要小心。如果您不控制客户端,启用正则表达式可能会增加您的API漏洞。

答案 1 :(得分:0)

我自己并不熟悉夏娃。但是看看它的网页似乎暴露了Flask的所有功能。

您需要查看有关访问请求数据的文档中的this页面。

在Flask应用中,定义一个接受POST和GET请求的方法,然后您可以通过foo访问request.args.get('contains', '')

这就是我的意思:

@app.route('/people', methods=['POST', 'GET'])
def get_people():
    search_key = request.args.get('contains', '')
    #search for people containing 'foo' in your DB

希望这能为你提供一个如何处理事情的起点。