Статус HTTP_409_CONFLICT
Статус HTTP_409_CONFLICT применяется для указания на то,
что запрос не может быть выполнен из-за конфликта с текущим
состоянием целевого ресурса. Типичный случай - попытка создать
запись с уже существующим уникальным идентификатором.
В FastAPI статус передаётся в параметр status_code
декоратора маршрута или в объект HTTPException.
Синтаксис
from fastapi import status
status.HTTP_409_CONFLICT
Пример
Давайте вернём статус HTTP_409_CONFLICT при попытке
создать пользователя с уже занятым именем:
from fastapi import FastAPI, HTTPException, status
app = FastAPI()
users = ['abcde', 'article']
@app.post('/users/{name}')
def create_user(name: str):
if name in users:
raise HTTPException(
status_code=status.HTTP_409_CONFLICT,
detail='user already exists'
)
users.append(name)
return {'name': name}
Результат выполнения кода для адреса /users/abcde:
{"detail": "user already exists"}
Пример
Давайте зададим статус HTTP_409_CONFLICT прямо
в декораторе маршрута для операции обновления:
from fastapi import FastAPI, status
app = FastAPI()
@app.put('/items/{item_id}', status_code=status.HTTP_409_CONFLICT)
def update_item(item_id: int):
return {'item_id': item_id, 'status': 'conflict'}
Результат выполнения кода для адреса /items/1:
{"item_id": 1, "status": "conflict"}
Смотрите также
-
статус
HTTP_400_BAD_REQUEST,
который указывает на некорректный запрос -
статус
HTTP_404_NOT_FOUND,
который указывает на отсутствие ресурса -
статус
HTTP_422_UNPROCESSABLE_ENTITY,
который указывает на ошибку валидации данных -
модуль
status,
который содержит все HTTP-статусы FastAPI