У меня есть небольшой бэк на Nest JS, на котором есть некий
telegram.validate.service.ts
(что бы не сбивать с толку фейк код)
telegram.validate.service.ts
validate(user: ResponseVkUserDto): TValidateUserResponse | HttpException {
try {
return this.validateHash(user)
} catch (error) {
throw new HttpException({ message: 'Не удалось аутентифицироваться', error }, 500)
}
}
createBotHash(userString: string): string {
try {
......
} catch (error) {
throw new HttpException({ message: 'Не удалось создать bot hash', error }, 500)
}
}
validateHash(user: ResponseVkUserDto): TValidateUserResponse | HttpException {
try {
......
if (botHash !== userHash) return new HttpException('Ошибка при сравнивании хешей', 400)
return user
} catch (error) {
throw new HttpException(
{
message:
'Ошибка при валидации, если вы все сделали правильно, обратитесь в Тех.Поддержку',
error,
},
500
)
}
Когда случается ошибка, например где-то в глубинке, я получаю просто еб*ть какой огромный ответ, например ошибка в
createBotHash
:
{
"message": "Не удалось аутентифицироваться",
"error": {
"response": {
"message": "Ошибка при валидации, если вы все сделали правильно, обратитесь в Тех.Поддержку",
"error": {
"response": {
"message": "Не удалось создать bot hash",
"error": {
"code": "ERR_INVALID_ARG_TYPE"
}
},
"status": 500,
"message": "Не удалось создать bot hash",
"name": "HttpException"
}
},
"status": 500,
"message": "Ошибка при валидации, если вы все сделали правильно, обратитесь в Тех.Поддержку",
"name": "HttpException"
}
}
хотелось бы увидеть ответ:
{
"response": "текст ошибки (пофиг на вложеность)",
"status": 400,
"message": "текст ошибки (пофиг на вложеность)",
"name": "HttpException"
}
когда происходит ошибка в
validate
в самой первой функции, вернуть нужно:
{
{
.....
}
"status": 500,
"message": "Не удалось аутентифицироваться",
"name": "HttpException"
}
когда происходит ошибка в
createBotHash
{
{
.....
}
"status": 500,
"message": "Не удалось создать bot hash",
"name": "HttpException"
}
и так далее, главная проблема в том что когда случается ошибка где-то в глубинке, я получаю огромный ответ, с пачкой ошибок, конечно же если это считается нормой то окей, но что-то мне подсказывает что так не должно быть, скорее всего ошибка в моей структуре кода, а именно в каком то не правильном возврате ошибок.
так же побывал не обворачивать каждую функцию в try/catch, но это еще та хрень, получается что когда ошибка ложится сервер, а так мне точно не надо.
ребят, поделитесь опытом, как правильно выстроить работу с функциями в моем
telegram.validate.service.ts
так что бы нормально возвращать ошибку, нужную ошибку, что бы можно было понять на клиенте, где именно ошибка, а не разворачивать огромный объект ответа. Повторюсь возможно это считается нормой, если это так, так и напишите. Спасибо !