用于额外回调的 Monkey 补丁 eve.methods
Monkey patch eve.methods for additional callbacks
我正在尝试修补 eve 方法以提供回调来做一些预处理和 post-在它们变成有效负载之前分别处理请求和回复,例如:
from eve.methods.patch import patch_internal as __patch_internal
def my_patch(resource, payload=None, **lookup):
response, last_modified, etag, status = __patch_internal(
resource, payload,
concurrency_check=True,
skip_validation=False, **lookup)
# call callback depending on resource passing response
return response, last_modified, etag, status
import eve.methods
eve.methods.patch = my_patch
我面临的问题是Eve中的大部分函数都是直接导入的。
我必须分叉 Eve 才能这样做吗?
您调查过 Event Hooks 了吗?它们允许您将自定义回调函数绑定到 pre 和 post 事件和数据库操作。回调可以改变原始查询、正在存储的文档或返回的有效负载。
def inject_username_lookup(resource, request, lookup):
# alter the original query
lookup["username"] = {'$exists': True}
app = Eve()
app.on_pre_GET += inject_username_lookup
app.run()
由于您可以将多个回调挂接到同一事件(它们将按顺序执行),因此它允许实现一些非常好的关注点分离。 Database events也很厉害。
我正在尝试修补 eve 方法以提供回调来做一些预处理和 post-在它们变成有效负载之前分别处理请求和回复,例如:
from eve.methods.patch import patch_internal as __patch_internal
def my_patch(resource, payload=None, **lookup):
response, last_modified, etag, status = __patch_internal(
resource, payload,
concurrency_check=True,
skip_validation=False, **lookup)
# call callback depending on resource passing response
return response, last_modified, etag, status
import eve.methods
eve.methods.patch = my_patch
我面临的问题是Eve中的大部分函数都是直接导入的。 我必须分叉 Eve 才能这样做吗?
您调查过 Event Hooks 了吗?它们允许您将自定义回调函数绑定到 pre 和 post 事件和数据库操作。回调可以改变原始查询、正在存储的文档或返回的有效负载。
def inject_username_lookup(resource, request, lookup):
# alter the original query
lookup["username"] = {'$exists': True}
app = Eve()
app.on_pre_GET += inject_username_lookup
app.run()
由于您可以将多个回调挂接到同一事件(它们将按顺序执行),因此它允许实现一些非常好的关注点分离。 Database events也很厉害。