Отправка ответа пользователю о некорректно введенных данных
Возникла такая проблема - мне нужно отправить пользователю из метода 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;