javascript - Flask,从列表中“获取”单个用户
问题描述
我目前正在学习 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 调用中采用这一点,您就会越顺利。
推荐阅读
- java - NewStringUTF 是否复制传入的 const char *
- javascript - 如何在 React-native 中使导航标题标题动态化?
- node.js - 如何在验证 google id 令牌时指定域名
- ruby-on-rails - 如何在 Rails 6 中要求自定义 JS 文件
- python-3.x - Pypandoc 错误,RuntimeError:Pandoc 在转换过程中因退出代码“47”而死:未找到 b'pdflatex
- javascript - 通过 Spring Boot 的 Web 服务
- linux - 如何从两个文件夹中输出文件的差异并将输出以相同的名称保存在不同的文件夹中
- vhdl - VHDL:将测试用例名称字符串从运行脚本传递到模拟器的最佳方法?
- python - 熊猫会自动在第一个位置添加一行和一列吗?
- java - 如何让游戏的敌人跟随我的角色?