Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 使用Python RESTful API时处理字典中的KeyError的最佳方法_Python 3.x_Dictionary_Flask_Flask Restful_Keyerror - Fatal编程技术网

Python 3.x 使用Python RESTful API时处理字典中的KeyError的最佳方法

Python 3.x 使用Python RESTful API时处理字典中的KeyError的最佳方法,python-3.x,dictionary,flask,flask-restful,keyerror,Python 3.x,Dictionary,Flask,Flask Restful,Keyerror,启动服务器时,我会访问/users/1端点。因为字典是空的,所以它不存在。我被抛出了一个键错误,所以我的临时解决方案是将我的字典访问器从user\u dict[path\u user\u id]更改为.get(path\u user\u id,“此用户不存在”)。有没有更好的方法来处理这个问题我不确定这是否有用,但我的字典由整数键组成,这些键映射到一个“Person”类,该类包含有关此人的信息(姓名、年龄、地址等)404状态码表示“Resource not found”,非常适合您的用例 fro

启动服务器时,我会访问/users/1端点。因为字典是空的,所以它不存在。我被抛出了一个键错误,所以我的临时解决方案是将我的字典访问器从
user\u dict[path\u user\u id]
更改为
.get(path\u user\u id,“此用户不存在”)
。有没有更好的方法来处理这个问题

我不确定这是否有用,但我的字典由整数键组成,这些键映射到一个“Person”类,该类包含有关此人的信息(姓名、年龄、地址等)

404状态码表示“Resource not found”,非常适合您的用例

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")))

我认为服务器本身应该返回一个
400:Bad请求:请求无效。
当根据HTTP状态码定义请求一个不存在的用户时,400表示
由于语法错误,服务器无法理解该请求。未经修改,客户端不应重复请求
so不应用于语法上合理的请求
from flask import abort

...

def get(path_user_id):
    if path_user_id not in user_dict:
        abort(404)
    ...