[英]pass datetime parameter in URL string
This is how I want to call my REST API filtering on date range: 这就是我要在日期范围内调用REST API过滤的方式:
curl "127.0.0.1:5000/report?start=10%2F06%2F2015%2007%3A00%3A00&end=10%2F07%2F2015%2006%3A59%3A59" curl“ 127.0.0.1:5000/report?start=10%2F06%2F2015%2007%3A00%3A00&end=10%2F07%2F2015%2006%3A59%3A59”
where %2F is forward slash and %3A is colon 其中%2F为正斜杠,%3A为冒号
On parsing this URL here: http://www.freeformatter.com/url-parser-query-string-splitter.html I'm getting correct fields 在此处解析此URL时: http : //www.freeformatter.com/url-parser-query-string-splitter.html我正在获取正确的字段
This is the script I have so far: 这是我到目前为止的脚本:
from flask import Flask
from flask_restful import Resource, Api
from flask_restful import reqparse
from sqlalchemy import create_engine
e = create_engine("x")
parser = reqparse.RequestParser()
parser.add_argument('start', type = str)
parser.add_argument('end', type = str)
app = Flask(__name__)
api = Api(app)
class Report(Resource):
def get(self):
args = parser.parse_args()
conn = e.connect()
stat = """
select id from report where dates between ? and ?
"""
query = conn.execute(stat, [[args[0], args[1]])
for i in query.cursor.fetchall():
return {'id': i[0]}
api.add_resource(Report, '/report')
if __name__ == '__main__':
app.run()
This is the error I'm getting: 这是我得到的错误:
C:\\Users\\x> curl "127.0.0.1:5000/report?start=10%2F06%2F2015%2007%3A00%3A00&end=10%2F07%2F2015%2006%3A59%3A59" {"message": "an integer is required (got type str)"}
C:\\ Users \\ x> curl“ 127.0.0.1:5000/report?start=10%2F06%2F2015%2007%3A00%3A00&end=10%2F07%2F2015%2006%3A59%3A59” {“ message”:“ an必须为整数(类型为str的字符串)“}
I suspect your problem is that you're accessing a dict (args) by index. 我怀疑您的问题是您正在按索引访问字典(args)。 Reqparse creates a dictionary, not an array.
Reqparse创建一个字典,而不是一个数组。 You should access your parameters using
args['start']
and args['end']
. 您应该使用
args['start']
和args['end']
访问参数。
Your line would look like this: 您的行将如下所示:
query = conn.execute(stat, [args['start'], args['end']])
Additionally, your return is not correct. 此外,您的退货不正确。 Change
return {'id': i[0]}
to return {'id': i}
since i
in this case is not an array. 更改
return {'id': i[0]}
以return {'id': i}
因为在这种情况下, i
不是数组。
One last thing, I highly suggest using http://pythonhosted.org/Flask-SQLAlchemy/ instead of using raw SQL queries. 最后一件事,我强烈建议您使用http://pythonhosted.org/Flask-SQLAlchemy/,而不要使用原始SQL查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.