假设我在get方法中有以下解析器:
from flask.ext.restful import reqparse
parser = reqparse.RequestParser()
parser.add_argument('when', type=datetime, help='Input wasn\'t valid!')
然后我想用curl测试所说的get方法......
curl --data "when=[WHAT SHOULD I WRITE HERE?]" localhost:5000/myGet
所以问题是,我应该如何调用get方法?我尝试了很多不同的格式,尝试阅读rfc228标准等,但我无法找出正确的格式。
答案 0 :(得分:14)
有点晚了,但我刚刚遇到同样的问题,试图用RequestParser解析日期时间,遗憾的是文档对这种情况没那么有用,所以看到并测试了RequestParser和Argument代码之后,我我想我发现了这个问题:
当您在type=datetime
方法中使用add_argument
时,它只需使用arg调用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
functool而不是lambda来获得相同的结果或命名函数。
此解决方法是in the docs。
答案 1 :(得分:2)
仅需对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
来自the docs