使用 Python RESTful API 时处理字典中 KeyError 的最佳方法
Best way to handle KeyError in dictionary when working with Python RESTful API
from flask import Flask, jsonify, request
from flask_restful import Api, Resource
import jsonpickle
app = Flask(__name__)
api = Api(app)
# creating an empty dictionary and initializing user id to 0.. will increment everytime a person makes a POST request
user_dict = {}
user_id = 0
# Define a class and pass it a Resource. These methods require an ID
class User(Resource):
@staticmethod
def get(path_user_id):
return jsonify(jsonpickle.encode(user_dict.get(path_user_id, "This user does not exist")))
当我启动服务器时,我去访问 /users/1 端点。因为字典是空的,所以它不存在。我被抛出一个 KeyError,所以我的临时解决方案是将我的字典访问器从 user_dict[path_user_id]
更改为 .get(path_user_id, "This user does not exist")
。有没有更好的方法来处理这个问题?
我不确定这是否有用,但我的字典包含映射到 "Person" class 的整数键,其中包含有关此人的信息(姓名、年龄、地址等)
404 状态代码代表 "Resource not found",非常适合您的用例
from flask import abort
...
def get(path_user_id):
if path_user_id not in user_dict:
abort(404)
...
from flask import Flask, jsonify, request
from flask_restful import Api, Resource
import jsonpickle
app = Flask(__name__)
api = Api(app)
# creating an empty dictionary and initializing user id to 0.. will increment everytime a person makes a POST request
user_dict = {}
user_id = 0
# Define a class and pass it a Resource. These methods require an ID
class User(Resource):
@staticmethod
def get(path_user_id):
return jsonify(jsonpickle.encode(user_dict.get(path_user_id, "This user does not exist")))
当我启动服务器时,我去访问 /users/1 端点。因为字典是空的,所以它不存在。我被抛出一个 KeyError,所以我的临时解决方案是将我的字典访问器从 user_dict[path_user_id]
更改为 .get(path_user_id, "This user does not exist")
。有没有更好的方法来处理这个问题?
我不确定这是否有用,但我的字典包含映射到 "Person" class 的整数键,其中包含有关此人的信息(姓名、年龄、地址等)
404 状态代码代表 "Resource not found",非常适合您的用例
from flask import abort
...
def get(path_user_id):
if path_user_id not in user_dict:
abort(404)
...