在使用 Python、Flask、Heroku、Jquery 和 Google Books API编写一个小型 profect (日语)时,我在执行“検索”(意思是“搜索”)时收到 500 Internal Server Error。
当您在旁边的框中单击带有某些输入的“検索”时,它会向 Google Books API 发送请求,并通过带有 Jquery 的 Ajax 获取与该参数匹配的图书数据,如下所示。
@app.route("/_search_books")
def search_books():
title = request.args.get('title')
if title:
title = title.encode('utf-8')
url = 'https://www.googleapis.com/books/v1/volumes?q=' + title
h = urlopen(url)
data = json.load(h)
books = []
for i in range(len(data['items'])):
try:
title = data['items'][i]['volumeInfo']['title']
except:
title = None
try:
author = data['items'][i]['volumeInfo']['authors'][0]
except:
author = None
try:
publisher = data['items'][i]['volumeInfo']['publisher']
except:
publisher = None
try:
year = data['items'][i]['volumeInfo']['publishedDate']
except:
year = None
try:
thumbnail = data['items'][i]['volumeInfo']['imageLinks']['thumbnail']
except:
thumbnail = None
try:
page = data['items'][i]['volumeInfo']['pageCount']
except:
page = None
books.append({'title': title, 'author': author, 'publisher': publisher, 'year': year, 'thumbnail': thumbnail, 'page': page})
return jsonify(result=books)
它在开发中正常工作,所以我猜它是 Google Books API 的权限相关的东西或 SSL 相关的东西。
奇怪的是它并不总是返回 500,它有时会返回预期的结果。这似乎取决于我执行的时间,比如早上 200 和下午 500。
提前致谢 :)