Лучший способ обработать KeyError в словаре при работе с Python RESTful API - PullRequest
0 голосов
/ 01 мая 2019
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", который содержит информацию о человеке (имя, возраст, адрес и т. Д.)

1 Ответ

2 голосов
/ 01 мая 2019

Код состояния 404 представляет «Ресурс не найден», что идеально подходит для вашего варианта использования

from flask import abort

...

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