Flask: ошибка Unicode при попытке проанализировать полезную нагрузку POST - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь создать конечную точку API Flask, которая получает URL-адрес изображения из полезной нагрузки JSON. Я использую 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)

Однако при попытке отправить URL-адрес на конечную точку с типом содержимого 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'}

Как я могу получить свою полезную нагрузку в виде словаря вместо объекта Юникод?

Ответы [ 3 ]

0 голосов
/ 14 мая 2018

Похоже, вы используете python2, и вы можете распечатать результат, так почему бы не распечатать тип словарного объекта и выяснить его тип.

0 голосов
/ 14 мая 2018

Я только что понял, что ошибка была в том, как я обработал image_url в моей функции get_caption. Сообщение об ошибке привело меня к мысли, что проблема заключалась в разборе полезной нагрузки. Я прошу прощения за недоразумение. Спасибо всем, кто ответил, вы помогли мне найти ошибку.

0 голосов
/ 14 мая 2018

Хотя я не думаю, что 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...