Índice
O Módulo HTTP dentro de nossos aplicativos escritos em Node.js Eles nos ajudam a construir parte da funcionalidade para fazer nossos servidores ganharem vida, no entanto, este não é o uso exclusivo que podemos dar a este módulo.O verdadeiro poder de HTTP é visto quando usamos seu objeto para processar as diferentes solicitações ou solicitar que podem vir de nosso aplicativo, com isso podemos processar os dados que vêm de PUBLICAR por meio de formulários ou solicitações de clientes DESCANSO.
Requisitos do tutorialPara realizar os exercícios propostos neste tutorial devemos ter uma instalação funcional de Node.js em nosso sistema e tem permissão para acessá-lo. Também é importante poder ter acesso a um editor de rich text para codificar os exemplos, podemos usar o que quisermos, no entanto, para sua facilidade de uso, recomendamos Texto Sublime ou Bloco de notas ++ que também tem complementos para a sintaxe JavaScript Y HTML.
Processamento de dados PUBLICAR nos permite adquirir dados de formulários, com isso podemos tratar os dados que vêm das interações do usuário com nossas aplicações, permitindo assim implementar uma lógica de negócio para processar esses dados.
A maneira mais direta que temos de processar os dados PUBLICAR é através Objeto HTTP, por meio da interação direta com o método createServer () podemos identificar o tipo de método da solicitação, PUBLICAR ou OBTER e até mesmo POR Y EXCLUIR.
Se formos observadores, vemos que isso nos faz pensar sobre nossas aplicações de uma forma Repousante, ou seja, podemos nos comunicar com ele por meio de diferentes clientes e não necessariamente por meio de formulários HTMLNo entanto, esse é um tópico que vai além deste tutorial.
A primeira coisa que faremos é criar um pequeno formulário que nos permitirá capturar os dados da nossa aplicação no navegador, para isso vamos criar um arquivo chamado form.html no diretório ou pasta de nosso aplicativo.
Este último não é recomendado em um ambiente de produção, portanto, apenas o tomaremos como referência para podermos demonstrar como o sistema funciona. Objeto HTTP. O código do nosso formulário será o seguinte:
Como podemos ver, simplesmente indicamos ao nosso formulário que ele deve usar o método PUBLICAR, temos alguns campos de texto e, finalmente, um botão enviar para enviar nossos dados ao servidor.
Agora devemos criar o servidor Node.js que nos ajudará a coletar os dados do formulário, aqui devemos levar em consideração duas possibilidades, a primeira é quando acessamos o caminho da nossa aplicação, esta estará utilizando o método OBTER e é aqui que devemos mostrar nosso formulário.
A segunda possibilidade é quando os dados do formulário são enviados e para isso devemos validar o método PUBLICAR qual é o objetivo do exercício. Para que possamos exibir o formulário, devemos criar um componente síncrono que leia nosso arquivo form.html e servi-lo na rota correspondente, para isso podemos contar com o método readFileSync do módulo fs.
Na próxima parte devemos fazer com que nosso servidor possa lidar com os dados PUBLICAR, para isso vamos simplesmente mostrar o que recebemos no console com o método console.log (), desta forma podemos confirmar que tudo está funcionando corretamente, vamos ver o código inicial para conseguir o que queremos:
var http = require ('http'); var querystring = require ('querystring'); var util = require ('util'); var form = require ('fs'). readFileSync ('form.html'); http .createServer (function (request, response) {if (request.method === "POST") {var dataPost = ''; request.on ('data', function (chunk) {dataPost + = chunk;}). on ('end', function () {var dataPostObject = querystring.parse (dataPost); console.log ('Dados enviados pelo usuário: \ n', dataPost); response.end ('Você enviou dados: \ n' + util.inspect (dataPostObject));});} if (request.method === "GET") {response.writeHead (200, {'Content-Type': 'text / html'}); resposta. end ( formulário);}}). ouvir (8082);Para tornar tudo o mais legível possível, os módulos foram incorporados adicionalmente string de consulta Y Útil, com eles podemos processar a informação que vem do servidor e assim poder manipulá-la para imprimi-la.
Vamos ver como nosso formulário deve ficar inicialmente quando iniciamos nosso aplicativo e abrimos o navegador no caminho raiz do projeto:
PROLONGAR
Vamos agora inserir alguns dados nos campos de texto que vemos em nosso formulário e clicar no botão enviar, isso nos apresentará uma tela com os dados enviados e imprimirá o console para nós. pedido simples, isto é, como é recebido por nosso aplicativo:Vimos então que foi muito fácil processar os dados do formulário, pelo menos mostrá-los novamente.
Embora o exemplo anterior funcione corretamente, ele tem alguns pontos fracos que se o aplicativo entrasse em produção, poderia nos causar mais dor de cabeça, por exemplo, o que acontece se ele nos enviar mais dados do que a memória do nosso servidor pode suportar, obviamente nosso toda a estrutura entraria em colapso. Se recebermos dados de PUBLICAR vazio, no estado atual de nosso aplicativo, ele falhará e obteremos um erro que fará com que nosso serviço trave e pare de funcionar.
Para corrigir esses defeitos, basta incorporar algumas validações muito simples, em primeiro lugar vamos incorporar uma variável que nos ajudará a limitar os dados recebidos a um máximo de 2 MBIsso pode nos dar um pouco de segurança de que pelo menos com poucos usuários não será possível travar o sistema. Então iremos avaliar isso para que nosso pedido PUBLICAR ser processado em Objeto HTTP que o contém não pode estar vazio, portanto, garantimos que não haja falhas diretas em nosso servidor. Vejamos o código acima com as modificações apropriadas:
var http = require ('http'); var querystring = require ('querystring'); var util = require ('util'); var form = require ('fs'). readFileSync ('form.html'); var maxData = 2 * 1024 * 1024; http.createServer (function (request, response) {if (request.method === "POST") {var dataPost = ''; request.on ('data', function (chunk) {dataPost + = chunk; if ( dataPost.length> maxData) {dataPost = ''; this.destroy (); response.writeHead (413); response.end ('Os dados inseridos excedem nossa capacidade');}}). on ('end', função () {if (! PostData) {response.end (); return;} var ObjectPostData = querystring.parse (PostData); console.log ('O usuário enviou os dados: \ n', PostData); response.end ( 'Você enviou os dados: \ n' + util.inspect (datosPostObjeto));});} if (request.method === "GET") {response.writeHead (200, {'Content-Type': ' text / html '}); response.end (form);}}). listen (8082);Se recebermos dados maiores que 2 MB, simplesmente escrevemos um cabeçalho HTTP 413 para indicar o caso e destruímos imediatamente os dados recebidos para não manter a carga desnecessária no nosso servidor.
No caso de recebermos dados vazios de PUBLICAR, simplesmente continuamos nossa execução evitando que o serviço seja interrompido inesperadamente.
Outro uso que podemos dar ao método PUBLICAR do HTTP é poder receber arquivos, para isso devemos instalar um complemento em nosso sistema e é o formidável pacote, para atingir este objetivo no console Node.js vamos executar o seguinte código:
npm install [email protected]Deve ser o seguinte:
No próximo ato vamos modificar nosso form.html com o seguinte código:
Basicamente o que fizemos foi modificar o cabeçalho do formulário para que nosso servidor saiba que vai receber algo mais do que apenas texto, e também mudamos os campos de texto para arquivos. Finalmente vamos modificar nosso arquivo server.js e colocaremos o seguinte código:
var http = require ('http'); var formidable = require ('formidable'); var form = require ('fs'). readFileSync ('form.html'); http.createServer (function (request, response) { if (request.method === "POST") {var entrando = new formidable.IncomingForm (); entrando.uploadDir = 'arquivos'; entrando.on ('arquivo', função (campo, arquivo) {if (! arquivo .size) {return;} response.write (file.name + 'received \ n');}). on ('end', function () {response.end ('Todos os arquivos foram recebidos');}); coming.parse (request);} if (request.method === "GET") {response.writeHead (200, {'Content-Type': 'text / html'}); response.end (form);} }). ouça (8082);Vemos como o módulo formidável é quem nos ajuda a processar o upload dos arquivos, isso irá armazená-los em uma pasta chamada registros, que para a pasta de destino funcionar deve ter permissão de gravação para Node.js.
Com este último terminamos nosso tutorial, pois vimos que temos várias opções com as quais podemos processar as solicitações. PUBLICAR usando o objeto HTTP no nosso servidor Node.js, além de todas as vantagens que agrega aos nossos empreendimentos.