我正在访问Hacker news APIhere,希望通过JSON获取每个帖子的详细信息。我想把这个JSON发送到我的React前端。在
这个请求需要很长时间。我需要怎么做才能发送响应?在
@app.route('/api/posts')
def get_posts():
r = requests.get('https://hacker-news.firebaseio.com/v0/askstories.json?print=pretty')
data = r.text
jsonData = []
for post in data:
r = requests.get('https://hacker-news.firebaseio.com/v0/item/'+post+'.json?print=pretty')
r.text
jsonData.append(r.text)
jsonData = jsonify(jsonData)
print jsonData
return jsonData
requests
有一个.json()
方法,您应该使用该方法将JSON数组字符串转换为python列表。在如另一个答案所述,
for post in data:
将从HTTP响应中给您单独的字符。换句话说,想想for post in "abc":
会给你什么。在这是因为您正在针对所有这些单独的字符运行一个新的查询。在
查询json API并将响应视为文本:
因此,
r.text
将是一个字符串“[123412351236]”,而不是是一个整数列表。在因此,当你在你的
^{pr2}$for post in data
中迭代该值时,你要做的是得到每个字符:会给你:
因此,您基本上是在hacker news API中查询数以百计的无效帖子,而不是几十个实际的帖子。您应该将
json
视为json-通过使用内置于请求中的json特性:data = r.json()
这将为您提供一个数字列表以进行迭代-您还需要更改连接数据以生成url字符串的错误方式(使用
.format
)。在相关问题 更多 >
编程相关推荐