Валидация даты в параметрах запроса, не отдаёт ошибку в swagger на FastAPI
Получаю и валидирую 2 даты через параметры запроса и хочу в случае ошибки выдавать ответ в swagger. Но swagger валится в 500 ошибку. Как починить то? :)
Пример запроса:
localhost:8080/dashboard?start_date=2023-05-11&end_date=2023-05-11
Router:
router.get('/dashboard', tags=['Dashboard'])
async def get_dashboard(date: DashboardDate = Depends()):
Model:
class DashboardDate(BaseModel):
start_date: str
end_date: str
@root_validator(pre=True)
def date_validation(cls, values):
if 'start_date' not in values and 'end_date' not in values:
raise ValueError('Должны быть указаны обе даты')
if values['start_date'] >= values['end_date']:
raise ValueError('Начальная дата должна быть меньше конечной даты')
try:
values['start_date'] = datetime.strptime(values['start_date'], '%Y-%m-%d').isoformat()
values['end_date'] = datetime.strptime(values['end_date'], '%Y-%m-%d').isoformat()
except:
raise ValueError('Указан неверный формат даты')
return values
Источник: Stack Overflow на русском