Python Eve包含过滤器
有没有办法返回某个字段包含特定值的项目呢?比如:
GET /people?contains="foo"
这个请求会返回所有名字里包含'foo'这个词的人。
提前谢谢你!
2 个回答
0
我自己对Eve不是很熟悉。不过从它的网站上看,似乎可以使用Flask的所有功能。
你需要查看一下这个文档页面,它讲的是如何获取请求数据。
在你的Flask应用中,定义一个方法,这个方法可以同时处理POST和GET请求,然后你就可以通过 request.args.get('contains', '')
来获取 foo
的值。
这就是我想表达的意思:
@app.route('/people', methods=['POST', 'GET'])
def get_people():
search_key = request.args.get('contains', '')
#search for people containing 'foo' in your DB
希望这能给你一个开始的方向,让你知道该怎么做。
13
你可以使用mongodb的$regex
操作符,但在Eve中默认是被禁止的(MONGO_QUERY_BLACKLIST = ['$where', '$regex']
)。
你可以在你的settings.py
文件中添加MONGO_QUERY_BLACKLIST = ['$where']
。这样你就可以像这样查询你的API:
?where={"name": {"$regex": ".*foo.*"}}
。
不过要小心。如果你不能控制客户端,开启正则表达式可能会让你的API更容易受到攻击。