flask-restful 解析器的日期时间格式是什么?
假设我在我的获取方法里面有一个解析器:
from flask.ext.restful import reqparse
parser = reqparse.RequestParser()
parser.add_argument('when', type=datetime, help='Input wasn\'t valid!')
然后我想用curl来测试这个获取方法...
curl --data "when=[WHAT SHOULD I WRITE HERE?]" localhost:5000/myGet
所以问题是,我应该怎么调用这个获取方法呢?我试过很多不同的格式,也看过rfc228标准等等,但就是找不到正确的格式。
2 个回答
7
这是关于Flask-Restful(版本0.3.5)的一个更新:如果你只需要ISO 8601或RFC 822格式的话,可以使用它自带的日期和时间功能来解析。
from flask_restful import inputs
parser.add_argument('date', type=inputs.datetime_from_iso8601)
所以请求的格式会是这样的,
curl --data "date=2012-01-01T23:30:00+02:00" localhost:5000/myGet
详细信息可以查看文档
29
有点晚了,但我刚好遇到了同样的问题,想用RequestParser来解析日期时间,结果发现文档对这种情况帮助不大。经过查看和测试RequestParser和Argument的代码,我觉得找到了问题所在:
当你在add_argument
方法中使用type=datetime
时,实际上它只是调用了datetime
并传入参数,像这样:datetime(arg)
。所以如果你的参数是像2016-07-12T23:13:3
这样的字符串,就会出现an integer is required
的错误。
在我的情况下,我想把格式为%Y-%m-%dT%H:%M:%S
的字符串解析成一个日期时间对象,所以我想用类似type=datetime.strptime
的方式,但你知道这个方法需要一个格式参数。最后我用了这个变通方法:
parser.add_argument('date', type=lambda x: datetime.strptime(x,'%Y-%m-%dT%H:%M:%S'))
这样你就可以使用任何你想要的日期时间格式了。此外,你也可以用partial
函数工具来代替lambda,得到同样的结果,或者使用一个命名的函数。
这个变通方法在文档中有提到。