@K1NDER

Как правильно изменить?

Делаю свое REST API, в нем реализован запрос и получение ответа:
@app.route('/getTranding')
def getTranding():
    if request.args.get('count'):
        trending = api.trending(count=int(request.args.get('count')))
        return f"{trending}"


В основном скрипте сделано так:
data = {
            'count': 2,
        }
        trending = requests.get("http://45.141.184.**:****/getTranding", params=data)
print(trending.text)
    for tiktok in trending.text:
        print(tiktok["id"])

Если смотреть по print ответ нормальный, такой же какой получает мой API при запросе, вот его часть:
[{'id': '6945106549777976577', 'desc': '#ПростыеРисунки #3Dрисунок #ХочуВрекомендации', 'createTime': 1617033632, 'video': {'id': '6945106549777976577', 'height': 1024


Но в цикле сразу перестает получатся, хотя в самом API у меня все нормально.
В итоге получаю такие ошибки:
print(tiktok["id"])
TypeError: string indices must be integers


Так же заметил, что если этот цикл использовать в самом API, то цикл сработает столько раз, сколько запросили в count, но когда ответ от API получает мой скрипт, то цикл срабатывает большое количество раз, как это можно исправить?
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Если хотите возвращать JSON объект - возвращайте JSON объект, а не строку.

Удаляйте здесь вообще строку
return f"{trending}"

Просто return trending пусть будет

Ну или подключайте json либу и делайте loads() из результата.

trending = requests.get("http://45.141.184.**:****/getTranding", params=data)
for tiktok in json.loads(trending.text):


А еще у flask есть jsonify

from flask import jsonify

@app.route('/getTranding')
def getTranding():
    if request.args.get('count'):
        trending = api.trending(count=int(request.args.get('count')))
        return jsonify(trending)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
trending.text - это текст. Думаю, имелось в виду trending.json()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы