Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

conectar front com back

Eu refiz o curso que vcs me indicaram mas mesmo assim nao consegui conectar o front-end com back-end. Estou com muitas duvidas e vou lista-las aqui, peco por favor a sua ajuda:

  1. Exemplo "JS na web: CRUD com JavaScript assíncrono" usa o Fetch pra acessar a url e no curso "Rest com NodeJS: API com Express e MySQL", ela usa o express pra acessar a url. Qual a diferenca dos 2?

  2. Quando faço um post pelo formulario, por que devo usar o DOM pra pegar essas informacoes? Nao deveria vir direto pelo req.body?

  3. Se eu uso o DOM, como no primeiro curso mostrado pelo instrutor, como posso fazer isso usando o express, app.post('/atendimentos',(req, res) => {} sendo que ele passa o " nome e o email" via metodo para fetch pelo body: JSON.stringify({

         nome: nome,
         email: email
     }).        
  4. Vejo que no curso se usa sempre localhost//3000 para subir o servidor, e pra relacionar o back-end com o front-end "html" ele usa o browser-sync na porta 5000, ou seja fico rodando a porta 3000 para o node e a porta 5000 para o html, certo?

  5. Se eu resolver subir esse site no hostgator, em qual porta coloco o meu dominio ex. xxx.com.br?

Gostaria de fazer um formulario so com nome, colocar no banco de dados mysql e depois subir no hostgator e ver funcionando, mas nao to conseguindo entender todo esse processo. Desde ja muito obrigado espero que vc possa me ajudar, vlw

2 respostas
solução!

Boa noite Marcelo, tudo certo?

Você trouxe ótimas dúvidas nesse tópico e vou tentar respondê-lo:

1- Quando estamos no Express/Node/Back End, estamos criando rotas e recursos. Ou seja, estamos definindo ali quais URLs estarão disponíveis e qual é a resposta de cada um desses endereços.

Já no JavaScript do navegador/Front End, estamos apenas acessando uma rota ou recurso. Ou seja, estamos fazendo uma requisição à um servidor naquele endereço e naquela rota e passando algumas informações.

2- Você entregou parte da resposta no final. O Front End precisa acessar o DOM para buscar as informações que o usuário inseriu na página e em seguida precisa colocar essas informações no corpo da requisição e enviar essas informações para o Back End. Sendo assim, quando essa requisição chega no Back End, o objeto req.body vai ter esses campos acessíveis.

3- Essa dúvida mistura um pouco as responsabilidades: normalmente as chamadas do tipo fetch ficam no Front End para acessar o Back End e as rotas ficam no Back End representando os recursos que podem ser acessados. Isso não impede que o seu Back End utilize outro serviço, assim como é mostrado no curso NodeJS: Streaming de dados e Repositório, mas normalmente não é utilizado o método fetch() pois ele é um método que depende do browser até onde sei. (É possível utilizar um pacote npm chamado node-fetch, mas não é uma ferramenta nativa do Node).

4- As portas que são utilizadas por cada uma das aplicações são convenções, então se no ambiente de desenvolvimento você garantir que está utilizando portas diferentes e que os endereços das aplicações foram inseridos corretamente nas outras aplicações provavelmente você não terá nenhum problema. Usualmente, páginas web utilizam as portas 8000 ou 8080. Em caso de dúvidas você pode checar se existe alguma sugestão na documentação da ferramenta que você está utilizando.

5- Alguns provedores utilizam o que é chamado variável de ambiente. Essa variável contém o valor da porta que deve ser utilizada para acessar sua aplicação, e você pode acessar esse valor no node, por exemplo, como process.env.nomeDaVariavel. Ou seja, você pode fazer algo no seu código como:

const portaDaAplicação = process.env.PORT || 5000;

e ele vai checar se uma variável do sistema existe com o nome PORT. Se ela não existir, vai ser atribuído o valor 5000. Lembrando que nem todos provedores te dão essa opção e podem ter uma forma diferente de lidar com as portas. Essa experiência que estou relatando é como acontece no Heroku e eu acho que é uma ótima prática a ser seguida, mas você deve entrar em contato com o seu provedor e tirar essa dúvida.

Espero que eu tenha resolvido as dúvidas. O aprendizado de tecnologia às vezes é bem confuso mesmo e pode parecer desafiador demais, mas diminuindo em problemas menores como você fez nos deixa mais próximo de conquistar esse mundo da programação. Caso tenha alguma questão restante não hesite em fazê-la.

Caso este post tenha resolvido sua dúvida, por favor, marque o tópico como solucionado ✓.Bons Estudos!

Obrigado João Manoel Lima, vou tentar aqui =)