/
mxtn
/
webapi
Обзор
Документация
Войти
/
mxtn
/
webapi
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/errors/custom.rs
41 строка
1 KB
Max Talbushkin
Refactoring
10 июл 2025, 15:21
10 июл 2025, 15:21
7614c83
Код
Авторство
О чём код?
use actix_web::{http::StatusCode, HttpResponse, ResponseError}; use thiserror::Error; // Определяем пользовательские ошибки приложения #[derive(Error, Debug)] pub enum AppError { #[error("Ошибка авторизации")] AuthError, #[error("Пользователь не найден")] NotFound, #[error("Ошибка базы данных: {0}")] Database(#[from] sqlx::Error), #[error("Ошибка JWT: {0}")] Jwt(#[from] jsonwebtoken::errors::Error), #[error("Внутренняя ошибка сервера")] Internal, } // Реализуем трейт ResponseError для преобразования ошибок в HTTP-ответы impl ResponseError for AppError { fn status_code(&self) -> StatusCode { match self { AppError::AuthError => StatusCode::UNAUTHORIZED, AppError::NotFound => StatusCode::NOT_FOUND, AppError::Database(_) | AppError::Jwt(_) | AppError::Internal => { StatusCode::INTERNAL_SERVER_ERROR } } } fn error_response(&self) -> HttpResponse { match self { AppError::AuthError => HttpResponse::Unauthorized().body("authorization error"), _ => HttpResponse::build(self.status_code()).body(self.to_string()), } } }