下面的函数
print(usaddress.tag('hwy 13 & main st.'))
生成以下结果
(OrderedDict([('StreetNamePreType', u'hwy'), ('StreetName', u'13'), ('IntersectionSeparator', u'&'), ('SecondStreetName', u'main'), ('SecondStreetNamePostType', u'st.')]), 'Intersection')
我对下面的烧瓶返回使用相同的函数
@app.route("/parseAddress", methods=["POST"])
def parseAddress():
address = request.form['address']
return usaddress.tag(address)
但是对于HTTP状态,它显示为“intersection”而不是“ok200”,它获取结果的最后一部分并将其用作状态
在不重写正确的状态代码的情况下,返回结果的最佳方法是什么
我无法复制您提到的错误,但是,它确实引发以下异常,因为
usaddress.tag()
返回一个包含OrderedDict
的元组您可以通过使用
jsonify
模块并返回如下JSON响应来修复此问题:它将在JSON响应之后返回
你也可以这样做:
但它将返回一个数组,其中第二个元素是字符串
在前端处理起来可能不太方便
希望有帮助
看起来usaddress库正在返回一个包含两个元素的元组,一个OrderedDict和一个string。问题是Flask将返回值解释为(响应、状态)对。尝试
return usaddress.tag(address), 200
可能会满足您的需要,如果flask足够慷慨,可以将返回值转换为字符串—但一般来说,您需要自己将响应体转换为字符串,然后才能通过HTTP进行传递。JSON是用于此任务的常见序列化格式,因此我建议改为return flask.jsonify(usaddress.tag(address)), 200
如果您真的只想得到文本字符串
(OrderedDict([('StreetNamePreType', u'hwy'), ('StreetName', u'13'), ('IntersectionSeparator', u'&'), ('SecondStreetName', u'main'), ('SecondStreetNamePostType', u'st.')]), 'Intersection')
作为您的输出,那么您可以使用return str(usaddress.tag(address)), 200
作为替代-但是对于查看您的站点的普通开发人员来说,JSON可能会更为熟悉相关问题 更多 >
编程相关推荐