我有一个资源,例如ABC,我想操纵另一个资源,例如当我向ABC发布一个新项目时某些条件满足的BCD,我知道我可以将事件挂钩到post / pre_POST_ABC但是有没有“内部”方式在BCD上发布而不通过HTTP再次通过?
答案 0 :(得分:7)
在你的回调函数中你可以:
A)使用数据驱动程序将数据直接存储到数据库
这样的事情:
def update_ABC(request, payload):
accounts = app.data.driver.db['abc_collection']
account = accounts.insert(docs)
app = Eve()
app.on_post_POST_ABC += update_ABC
app.run()
会做的伎俩。您将以这种方式绕过框架,并直接存储在数据库中。
B)使用app.test_client.post()
直接通过应用程序进行POST。
app.test_client().post('/bcd', json.dumps({"field":"value"}, content_type='application_json'))
这可能是一个更好的选择,因为请求通过框架(像data_created
这样的元字段是为你处理的。)
更新:使用v0.5 +,您现在可以使用post_internal
来获得相同的结果。其他CRUD方法也有相同的内部方法。