我正在使用Python EVE框架编写API。
在我的on_post_GET
钩子中,由于某种原因,我想扩展request.query_string
一些附加条件。
此request.query_string
看起来像一个原始编码字符串,并且在现有内容中添加一些新条件无用。
我的字符串如下:
embedded=%7B%22some_key%22%3A1%2C%22another_key%22%3A1%2C%22one_more_key%22%3A1%2C%22and_more_key%22%3A1%2C%22and_more%22%3A1%2C%22some_specific_key%22%3A1%2C%22the_last_key%22%3A1%7D&where=%7B%22some_statement%22%3A%22in%28%5B%5C%22value1%5C%22%2C%5C%22value2%5C%22%5D%29%22%7D&max_results=10&page=1&sort=%5B%28%22date%22%2C0%29%5D
所以,我想在WHERE
语句中添加一个附加条件。我可能会以某种方式解析它,但有一些事情:
1)我可能有另一个条件和与病情相关的硬编码对我来说很糟糕。 2)我希望,有一些更好的方法来扩展它。
思想?
答案 0 :(得分:1)
您应该可以通过处理lookup
事件挂钩中的pre_GET
来制作过滤器,例如pyeve的documentation中的示例:
def pre_GET(resource, request, lookup):
# only return documents that have a 'username' field.
lookup["username"] = {'$exists': True}
app = Eve()
app.on_pre_GET += pre_GET
app.run()