Исключение Conflict
Исключение Conflict относится к классу HTTP-исключений Flask
и соответствует статус-коду 409. Оно применяется, когда запрос
не может быть выполнен из-за конфликта с текущим состоянием
целевого ресурса, например при попытке создать объект, который
уже существует. Первым параметром передаётся описание ошибки,
вторым - необязательный объект ответа response.
Синтаксис
from werkzeug.exceptions import Conflict
Conflict(description, response)
Пример
Давайте выбросим исключение Conflict при попытке
создать пользователя, который уже существует:
from flask import Flask
from werkzeug.exceptions import Conflict
app = Flask(__name__)
users = ['user']
@app.route('/user/<name>')
def add_user(name):
if name in users:
raise Conflict('user already exists')
users.append(name)
return 'created'
Результат выполнения кода для адреса /user/user:
Conflict
user already exists
Пример
Давайте перехватим исключение Conflict и вернём
собственный JSON-ответ:
from flask import Flask, jsonify
from werkzeug.exceptions import Conflict
app = Flask(__name__)
@app.errorhandler(Conflict)
def handle_conflict(error):
res = jsonify({'error': error.description})
res.status_code = 409
return res
@app.route('/user/<name>')
def add_user(name):
raise Conflict('user already exists')
Результат выполнения кода для адреса /user/user:
{"error": "user already exists"}
Смотрите также
-
класс
HTTPException,
базовый класс всех HTTP-исключений Flask -
атрибут
code,
который хранит статус-код исключения -
атрибут
description,
который хранит описание ошибки -
исключение
NotFound,
которое сигнализирует об отсутствии ресурса