Отправка ответа пользователю о некорректно введенных данных

Возникла такая проблема - мне нужно отправить пользователю из метода Post на Get описание ошибки о неправильно набранном пароле, итд. Предположим есть сайт и окно авторизации, при неправильно набранном пароле и последующей отправке на post метод возникает доп тег с описанием ошибки.

Как это можно реализовать в Nest, как получить тело ответа, не используя сессии, куки, параметров адресной строки?


Ответы (1 шт):

Автор решения: Sarkis Mkrtchian

Можно проверить правильность пароля, и, если пароль неправильный, то кидать ошибку, а на клиенте выводить сообщение ошибки.

На сервере:

// login.controller.ts
@Post("/login")
login(@Body() dto: LoginDto){
   return loginService.login(dto);
}
// login.service.ts
async login(dto: LoginDto){
   const user = await userService.get();
   const passwordEquals = dto.password === user.password;

    if(!passwordEquals) throw new HttpException("Не правильный пароль", HttpStatus.BAD_REQUEST);

    ...
}

На клиенте:

// login.tsx
function LoginPage(){
    const [error, setError] = useState();

    const login = async (formData: FormData) => {
        // ... 
        const response = await fetch("...url/login", {method: "post", body: formData});
        const data = await response.json();
        if(!response.ok) return setError(() => data.message)

        // ...
    }

    return (
       <form action={login}>
           {error && <span>{error}</span>
           {/* ui */}
      </form>
   )
}

export default LoginPage;
→ Ссылка