4
respostas

Duvida em login sem API

Ola, como estou tendo erro ao acessar o .jar. e não consigo usar o link para logar "http://instalura-api.herokuapp.com/api/public/login", gostaria de saber como dou continuidade nos estudos e entrego o trabalho de conclusão, se sempre fico empacado ao usar o api localhost, mesmo instalando em uma maquina formatada e seguindo os passos do curso. além do erro no login pelo o heroku "Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback.

Sat May 11 12:48:00 UTC 2019 There was an unexpected error (type=Method Not Allowed, status=405). Request method 'GET' not supported"

agora mesmo colocando copiando e colando os aquivos e mudando o fetch para o heroku da erro. Failed to compile.

./src/componentes/Timeline.js Error: Cannot find module '@babel/core'....

espero uma ajuda.

4 respostas

Aaron, este erro aparece pq você está tentando acessar a URL com uma requisicao GET, mas o servidor está esperando um POST.

Para você ter certeza de que está funcionando, você pode no terminal :

curl http://instalura-api.herokuapp.com/api/public/login -X POST -H "Content-Type: application/json" -d '{"login":"alots","senha":"123456"}

Como resposta você vai receber o token.

Dando certo, você tem certeza que deve ter algo de errado em como você está fazendo a chamada usando a Fetch API.

Eu fiz da seguinte forma, crieu um arquivo chamado webapi e coloquei a seguinte função:

export function post(service, data) {
    const requestInfo = {
        method: 'POST',
        mode: "cors",
        body: JSON.stringify(data),
        headers: new Headers({
            'Content-type': 'application/json'
        })
    };

    return fetch(API + service, requestInfo)
        .then(handleError);
}

Depois, dentro da classe de Login o meu método envia ficou:

envia(event) {
        event.preventDefault();

        const data = {login: this.login.value, senha: this.senha.value};
        const {history} = this.props;

        post("/public/login", data)
            .then(res => res.text())
            .then(token => {
                localStorage.setItem('auth-token', token);
                history.push('/timeline');
            })
            .catch(err => this.setState({msg: 'Not able to login'}));
    }

P.S: se estiver usando o Router na versao até a 3, você vai precisar de uns ajustes onde eu fiz const {history} = this.props; e history.push('/timeline');

Espero ter ajudado.

Boa noite, Aaron! Como vai?

Em relação à API local, vc está tendo problema com o MySQL, é isso? Se sim, dá uma olhada nesse tópico e veja se te ajuda!

Já sobre a requisição que vc mencionou estar falhando, acho que a dica do meu xará já irá te ajudar! Contudo, caso o problema persista, vc poderia compartilhar o seu código completo no github e mandar o link aqui? Assim eu poderei dar uma olhada no que está acontecendo!

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Bom dia, Gabriel, Tudo bem? realizei os procedimentos conforme no tópico, instalei a versão do MySQL 5.7. e continuo sem o acesso ao API. Java : java version "1.8.0_191" Java(TM) SE Runtime Environment (build 1.8.0_191-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode).

C:\>mysql -u root -p
Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 8 Server version: 5.7.26-log MySQL Community Server (GPL)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Boa noite, Aaron! Como vai?

Vc chegou a tentar a solução descrita pelo meu xará, Gabriel Poleze? Se sim, o que aconteceu?

Quando vc tenta executar o jar da API local, o que acontece? Vc poderia colar aqui o log completo para eu dar uma olhada?