Comunicação HTTP Servidor e Client
Iniciando com Node Express
Usar a mesma linguagem na ponta-a-ponta em um ambiente favorece a troca de conhecimento entre equipes e atualmente JavaScript é uma ótima opção, pois tem suporte nativo nos navegadores e facilidade desenvolvimento com o Node
Servidor (Resposta)
Usando o Express vamos começar importando as bibliotecas para o servidor com o npm
- Express: Controle de fluxo das requisições e respostas
- Body-Parser: intepretar conteúdo das requisições
- Cors: adicionar no protocolo Http os elementos necessários para comunicação CORS
npm i express body-parser cors
Gerando o arquivo com server.js com o conteúdo abaixo, com os detalhes no comentário
// Importação de bibliotecas
const express = require("express")
const bodyParser = require("body-parser")
const cors = require("cors")
// Ferramenta para controlar a requisição e resposta
const app = express()
// Possibilidade fazer requisições pelo navegador
app.use(cors())
// leitura e escrita para arquivos JSON
app.use(bodyParser.json())
// Criação do endpoint /mirror que retorna o json da requisição
app.post("/mirror", function (req, res) {
res.json(req.body)
})
// Definição de porta que será ouvida, ex: 8080
const port = 8080
// Iniciar o servidor e ouvir a porta
app.listen(port, function () {
console.log("Escutando a porta " + port + "!")
})
Para executar simplemente podemos usar o node
informando o arquivo desejado
node server.js
Client fetch (Requisição por fetch)
Usando a biblioteca do fetch nativa do JavaScript
Configuração de Requisição
Primeiro precisamos criar a configuração que será usada
const config = {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
id: 42,
text: "Vida, Universo e Tudo mais",
}),
}
Requisição pelo navegador
O operador await
é utilizado para esperar por uma Promise. Ele deve ser usado apenas dentro de uma função assíncrona com async function
const response = await fetch("http://localhost:8080/mirror", config)
const content = await response.json()
console.log(content)
Ou com o usado no then
e catch
fetch("http://localhost:8080/mirror", config)
.then(function (response) {
if (response.status === 200) {
return response.json()
}
})
.then(function (content) {
// Lidar com os dados recebidos
console.log('content', content)
})
.catch(function (error) {
// Tratar exceções: erros e outras situações
console.log('error', error);
});
Requisição pelo Node
Instalar a biblioteca de fetch para o Node
npm i node-fetch
Gerando o arquivo com client.js, com a importação da biblioteca para uso
// Importação da biblioteca de fetch
const fetch = require("node-fetch")
// Execução do comando
fetch("http://localhost:8080/mirror", config)
.then((res) => res.json())
.then((json) => console.log(json))
Executar pelo Node com o comando
node client.js