烧瓶,"GET"列表中的单个用户



我目前正在学习Flask。

我有一个存储在 Flask 文件中的用户列表。我已经成功创建了一个检索列表中每个人的函数,但我无法让它只检索该列表中的一个用户。我觉得我好像很接近,但我只收到"404 缺少用户"消息。

我希望它在列表中显示所选用户的 JSON,例如,转到/api/users/2 将获得 id 为 2 的用户。

我几乎可以肯定这是我的get_single_user函数的逻辑错误。

这是我到目前为止所做的

——
@app.route('/api/users', methods=['GET'])
def get_user_list():
page_number = int(request.args['page'])
user_slice = user_list[page_number * 6 - 6:page_number * 6]
return jsonify({"per_page": 6,
"total": len(user_list),
"total_pages": len(user_list) + 5 / 6,
"data": user_slice})

@app.route('/api/users/<user_id>', methods=['GET'])
def get_single_user(user_id):
if len(user_id) == 0:
return get_user_list()
found_user_int = -1
for user_position in range(0, len(user_list) - 1):
if user_list[user_position]['id'] == user_position:
found_user_int = user_position
if found_user_int >= 0:
user = user_list[found_user_int]
return jsonify(user)
else:
return "missing user", 404

user_list = [
{
"id": 1,
"email": "george.bluth@reqres.in",
"first_name": "George",
"last_name": "Bluth",
"avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg"
},
{
"id": 2,
"email": "janet.weaver@reqres.in",
"first_name": "Janet",
"last_name": "Weaver",
"avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/josephstein/128.jpg"
},
{
"id": 3,
"email": "emma.wong@reqres.in",
"first_name": "Emma",
"last_name": "Wong",
"avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/olegpogodaev/128.jpg"
}]

这是检索数据的 JavaScript 如果它有任何帮助 -

function getASingleUser(userID){
var xhr = new XMLHttpRequest();
xhr.open("GET","api/users/" + String(userID), true);
xhr.onload = function() {
if (xhr.readyState === 4 && xhr.status >= 200 && xhr.status < 300) {
var objUser = JSON.parse(xhr.responseText);
renderSingleUser(objUser)
}
else {
alert("Error " + xhr.status);
}
};
xhr.send()
}

谢谢!

更改:

if user_list[user_position]['id'] == user_position:
found_user_int = user_position

自:

if user_list[user_position]['id'] == int(user_id):
found_user_int = user_position

此外,除非您有理由将用户字典存储为列表,否则将整个内容存储为字典(以用户ID作为键(会容易得多,然后您可以这样做:user_dict.get(int(user_id))

最后,将 API 函数包装在 Try/except 中,以便 ajax 调用始终获得响应。您可以查看 json 响应的标准,我不记得它们,但它通常是这样的:

{'status':'ok', data: {'message':'text here'}}

您越早在所有 API 调用中采用它,您的未来情况就越好。

最新更新