我正在尝试构建一个Flask API端点,该端点从JSON有效负载中获取图像URL。我正在使用之前为我工作的flask.request.get_json()
:
@app.route("/caption", methods=["POST"])
def caption():
image_url = flask.request.get_json().get('image_url')
image_info = get_caption(image_url)
return flask.jsonify(image_info)
但是,当尝试将网址发布到内容类型为application/json
的端点时,我会收到AttributeError: 'unicode' object has no attribute 'image_url'
我尝试打印出flask.request.get_json()
的内容,然后我
{u'image_url': u'https://images.pexels.com/photos/66997/pexels-photo-66997.jpeg'}
如何将我的有效负载作为字典而不是unicode对象?
答案 0 :(得分:1)
虽然我不认为flask.request.get_json()会将您发布的字典返回给@zwer。 但如果你真的得到那本字典。 尽量做到这一点来实现你的目标。
import json
def caption():
image_json = flask.request.get_json()
image_url = json.loads(json.dumps(image_json)).get('image_url')
答案 1 :(得分:1)
好像你正在使用python2并且你可以打印出结果,所以为什么不打印出类似字典的对象的类型并找出它的类型。
答案 2 :(得分:1)
我刚刚意识到错误与我在image_url
函数中处理get_caption
的方式有关。错误消息让我相信问题在于解析有效负载。我为这个误会道歉。谢谢所有回答的人,你帮我找到了这个错误。