【问题标题】:How to call a method with python eve api?如何使用 python eve api 调用方法?
【发布时间】:2016-05-05 21:32:42
【问题描述】:

假设我想执行一个随机函数:

def compute_average( user) 

此函数将计算几个值的平均值并将其插入用户字段。这只是一个例子。

如何使用eve api调用这个函数?

我查阅了文档,但没有找到任何东西。

【问题讨论】:

  • 我在源代码中找不到那个函数...你在哪里看到的?
  • 这是一个例子,我说的是你在你的 api 中编写的函数
  • 我没用过 Eve,不过我会看 Github 例子中的settings.py 文件。
  • 是否存在类似'on post'的内容?用户发布内容时执行的函数。
  • Eve 只是坐在 Flask 上... Flask 中有一个 POST

标签: python api eve


【解决方案1】:

由于Eve 派生自Flask,您可以使用 Flask 方式路由页面:

from flask import jsonify
from eve import Eve
app = Eve()

@app.route('/average/<user>')
def compute_average(user):
    return jsonify({user:47})

if __name__=='__main__':
    app.run(debug=True)

用法:

$ curl http://localhost:5000/average/joe

结果:

{
  "joe": 47
}

【讨论】:

  • 在运行时我收到错误消息“ValueError: Attempted relative import in non-package”。显示在第 3 行:app=Eve()。你能帮我吗?卡住了 3 小时..stackoverflow.com/q/11536764/5658251 无法从中得出结论..
【解决方案2】:

如果我理解,您想要的是在请求之前/之后运行自定义代码。为此,您可以使用事件挂钩在请求或数据库事件之前/之后设置回调。 在任何 GETusers 资源之前运行 compute_average 的示例:

def compute_average(request, lookup) 
    # your code

app = Eve()
app.on_pre_GET_users += compute_average

app.run()

您的函数参数会发生一些变化。正如documentation 所述,对特定资源的回调接收原始flask.request 对象和当前lookup 字典作为参数。

但是,如果您需要检索文档来执行计算,您可以像往常一样在代码中执行mongodb 查询。 查看文档了解更多详情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多