我无法创建我的API以JSON格式返回日期字段。所以我不得不创建一个序列化它的函数。 dump_datetime函数为我做了。 我现在的问题是,每当我抛出GET资源请求时,我都不知道如何让我的资源调用运行dump_datetime调用。
让我们说我们有一个资源用户,其中有一个"生日"属性。我如何制作" birthdate"要通过dump_datetime()函数的属性吗?
Since in Eve you could already get the item call by http://127.0.0.1:5000/users/id
如何设置get调用以通过dump_datetime?
我的问题清楚了吗?
下面是使用我所做的反序列化功能的自定义函数的示例。我只是想知道如何让它在Eve项目和资源调用中运行。
email = db.Column(db.String(120), unique=True)
def dump_datetime(value):
"""Deserialize datetime object into string form for JSON processing."""
if value is None:
return None
return value.strftime("%Y-%m-%d")
@app.route('/test', methods=['GET'])
def test_mail():
bdate = datetime.datetime.strptime( '19900914', "%Y%m%d").date()
b = dump_datetime(bdate)
return jsonify(results = b)
更新: 我应该编辑/var/www/healthyoptions-middleware/eve/methods/get.py文件并为需要序列化的属性运行序列化函数?????
答案 0 :(得分:0)
如果我理解你的要求,你只需要使用事件挂钩。 GET方法的后请求挂钩和您想要的资源应该可以解决问题;例如on_post_GET_<resource_name> = deserializing_function
。或者,您可以挂钩数据库请求,例如on_fetched_resource _。
来自文档:
当执行GET,POST,PATCH,PUT,DELETE方法时,两者都是 引发了on_post_和on_post__事件。您 可以使用多个回调函数订阅这些事件。 回调将接收访问的资源,原始flask.request 对象和响应有效负载。
数据库事件挂钩的工作方式与请求事件挂钩类似。在数据库操作之前和之后触发这些事件。