5
respostas

Erro ao subir API no localhost e não salva na API do herokuapp.com

Boa tarde, já instalei várias versões do java mas mesmo assim a API não sobe no localhost e todas as vezes segui o passo a passo á risca, já desisti dessa opção. Agora estou tentando fazer requisições na api do herokuapp, consegui fazer a requisição GET, mas POST não estou conseguindo. Eu estava usando axios, achei que fosse isso então mudei para jquery, continua não salvando. Ele entra no success mas não salva. Alguém aí me ajuda, please. Já estou pra desistir do curso, e procurar uma outra escola. Já estou a tres dias nesse mesmo problema.

Segue meu código:

constructor(){ super();

    this.state = { 
        lista: [],
        nome:'',
        email:'',
        senha:''

    }
    this.salvaForm = this.salvaForm.bind(this);
    this.setNome = this.setNome.bind(this);
    this.setEmail = this.setEmail.bind(this);
    this.setSenha = this.setSenha.bind(this);
}

componentDidMount(){
    $.ajax({
        url: 'http://cdc-react.herokuapp.com/api/autores',
        dataType: 'json',
        success: function(res){
            this.setState({ lista: res })
        }.bind(this)
    })
}

salvaForm(evento){
    evento.preventDefault();

    const dados = JSON.stringify({
        nome:this.state.nome,
        email:this.state.email,
        senha:this.state.senha
    })

    $.ajax({
        url: 'http://cdc-react.herokuapp.com/api/autores',
        contentType: 'application/json',
        dataType: 'json',
        Type: 'post',
        data: dados,
        success: function(res){
            console.log('OS DADOS FORAM SALVOS COM SUCESSO!')
            this.setState({ lista: res })
        }.bind(this),
        err:function(erro){
            console.log(erro)
        }
    })
}
setNome(nome){
    this.setState({nome:nome.target.value})
}
setEmail(email){
    this.setState({email:email.target.value})
}
setSenha(senha){
    this.setState({senha:senha.target.value})
}
5 respostas

Oi Jacks, tudo bem? Quais problemas teve com a API local? Pode me informar por favor?

Boa tarde Wanderson, eu acho que deve ser de versão.

java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:53) at java.lang.Thread.run(Thread.java:748) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1054) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:829) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:764) at org.springframework.boot.SpringApplication.doRun(SpringApplication.java:357) at org.springframework.boot.SpringApplication.run(SpringApplication.java:305) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1124) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1113) at br.com.caelum.cdcreact.Boot.main(Boot.java:10) ... 6 more Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:104) at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:71) at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:205) at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1887) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:857) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850) at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:425) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:849) at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:343) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) ... 22 more

Que versão do java você está usando? Deve ser a 8. Confirma pra mim se seu MySQL está na versão 5.7 e se está fornecendo os dados de usuário e senha corretamente. Ele não está conseguindo conectar.

A versão do Java é o 1.7.0_80

O MySql está na versão 8.0

Entendi, o MySQL precisa ser na versão 5.7, isso por que as versões mais novas mudaram um pouco a questão da autenticação com o servidor e pra mudar isso você precisaria configurar algumas coisas.

Pela mensagem de erro, me parece que só trocar a versão do MySQL resolve.

Se quiser tentar apenas ajustar a configuração do MySQL, a configuração é feita com esse update no usuário usado mudando a forma de autenticação para o mysql_native_password : https://stackoverflow.com/questions/50373427/node-js-cant-authenticate-to-mysql-8-0