Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Método post cria novo user ao invés de autenticar

Eu consegui fazer essa parte do curso tranquilo mas, num projeto paralelo não foi igual. Se eu faço o post ela posta um novo objeto no meu json. Se eu clico em enviar, mesmo estando os inputs vazios, ele cria um cliente novo com nome e senha vazios. Estou usando uma api que fiz com json server. Gostaria de entender o porque.

1 resposta
solução!

Olá Ezequiel, tudo bem com você?

Peço desculpas pela demora em obter um retorno.

Quanto ao envio dos campos em branco, você pode adicionar uma validação para verificar se os campos de nome e senha estão preenchidos antes de criar um novo objeto no arquivo JSON. Por exemplo:

autenticar(usuario: string, senha: string): Observable<any> {
  if (!usuario || !senha) {
      return throwError('Usuário e senha são obrigatórios.');
  }
}

Outra forma de não aceitar campos em branco, é adicionar o atributo required no seu formulário HTML. Ao adicionar o atributo required a um campo de entrada (por exemplo, <input type="text" required>), o navegador irá verificar se o campo está vazio quando o formulário for enviado. Se o campo estiver vazio, o navegador não permitirá que o formulário seja enviado e exibirá uma mensagem de erro ao usuário, indicando que o campo é obrigatório.

Quanto a autenticação, é preciso utilizar o método subscribe para monitorar a requisição post, conforme mostro abaixo e é apresentado na aula Consumindo o serviço de autenticação:

 login() {
    this.authService.autenticar(this.usuario, this.senha).subscribe(
      () => {
        this.router.navigate(['animais']);
      },
      (error) => {
        alert('Usuário ou senha inválido');
        console.log(error);
      }
    );
  }

Todavia, vale ressaltar que como é um assunto externo ao curso e que não tenho acesso ao cenário completo do seu projeto, outros testes terão de ser feitos a fim de obter o resultado esperado, mas espero que esta resposta seja um bom ponto de partida para a resolução do seu objetivo.

Espero ter ajudado. Continue mergulhando em conhecimento e não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!