3

我在前夕有一个资源,例如 ABC,当我向 ABC 发布新项目时满足某些条件时,我想操纵另一个资源,例如 BCD,我知道我可以为 post/pre_POST_ABC 挂钩事件,但是否有“内部”方式在不通过 HTTP 的情况下在 BCD 上发布?

4

1 回答 1

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()直接通过应用程序发布。

app.test_client().post('/bcd', json.dumps({"field":"value"}, content_type='application_json'))

这可能是一个更好的选择,因为请求通过框架(像元字段一样data_created为您处理。)

更新:使用 v0.5+,您现在可以使用post_internal来实现相同的结果。其他 CRUD 方法也有等效的内部方法。

于 2014-03-05T18:25:37.087 回答