Na palestra anterior,
aprendemos sobre os fundamentos da rede, incluindo detalhes do protocolo HTTP.
Agora, vamos olhar para como Node pode ser usado para construir um servidor HTTP.
Este é o lugar onde o módulo HTTP núcleo que é construído em Node vem em nossa ajuda.
Além disso, vamos olhar para um par de outros módulos nó núcleo que são úteis para a
construção de um servidor HTTP usando Node.
Então, como fazemos uso do módulo Node HTTP?
Como eu mencionei, o módulo HTTP é um dos módulos principais que são incorporados no nó.
Então, este é um módulo de rede principal que suporta
uma base de alto desempenho para pilha HTTP.
Então, usar o módulo dentro do nosso aplicativo Node requer
que importemos o módulo para a nossa aplicação.
Então isso é o que fazemos dizendo const HTTP = exigem e,
o nome do módulo HTTP lá.
Agora, uma vez que o módulo é importado, em
seguida, este módulo HTTP suporta uma função CreateServer que toma
, como um parâmetro, uma função que atua como
uma função de retorno de chamada para o módulo CreateServer e
esta função tem dois parâmetros: request e response.
A solicitação é a mensagem de solicitação que vem do
lado do cliente e podemos analisar a mensagem de solicitação e, em seguida, extrair
uma grande quantidade de informações da mensagem de solicitação e usá-lo para
tomar decisões sobre como construímos a mensagem de resposta correspondente a isso.
A mensagem de resposta é construída usando o segundo parâmetro aqui, o res,
no qual podemos construir os vários valores de cabeçalho para a
nossa mensagem de resposta HTTP e também o corpo da mensagem de resposta HTTP.
Agora, para iniciar o servidor,
uma vez que você cria o servidor,
então você diria server.listen e, em seguida, fornecer o número da porta
e o nome do host para o servidor e que iniciará nosso servidor.
Analisaremos alguns detalhes no exercício de exemplos que se segue a esta palestra.
Como mencionei, as informações de mensagem de solicitação de entrada estão disponíveis
através do parâmetro req que a função leva no método CreateServer.
Então, o req ou pedido,
se você quiser dar-lhe nome completo,
você pode chamá-lo como um pedido, mas em geral descobrimos que em
exemplos usamos req para representar a mensagem de solicitação.
Ele suporta nas propriedades do objeto Javascript como o cabeçalho,
o corpo e também várias informações que podem ser extraídas,
o URL e o método que foi solicitado por esse site cliente.
E, em resposta, você constrói a resposta usando
o objeto Javascript resposta que suporta essa função SetHeader,
a função StatusCode que pode ser definida para o código de status da mensagem de resposta.
E então você escreveria a mensagem dizendo
res.write e você terminaria a mensagem dizendo
res.end e isso leva a parte final do corpo para a mensagem.
O corpo pode ser texto padrão ou HTML ou
qualquer outra informação que você deseja incluir dentro do corpo da mensagem de resposta.
Mas uma vez que o res.end é chamado,
a resposta é enviada de volta para o cliente a partir do servidor HTTP.
Dois outros módulos de núcleo que são úteis para nós
quando estamos construindo o servidor HTTP nó é o módulo de caminho nó.
O módulo de caminho nos permite especificar o caminho para um arquivo e, em seguida,
examinar se o arquivo existe ou examinar mais detalhes sobre um arquivo.
Por exemplo, a extensão do arquivo,
nome e assim por diante.
Assim, o módulo de caminho pode ser usado dentro da
nossa aplicação, exigindo o módulo de caminho como mostrado aqui.
E então, isso suporta métodos,
como, por exemplo, path.resolve,
que irá converter um caminho relativo em
um caminho absoluto que todo o caminho para o arquivo.
Você também pode verificar o nome da extensão para o arquivo chamando a
função path.extname e fornecer o caminho do arquivo que
examinará a extensão do nome do arquivo.
Da mesma forma, o módulo do sistema de arquivos,
novamente um módulo núcleo em Node,
nos permitirá ler e gravar
arquivos que existem no sistema de arquivos local no computador.
Assim, os módulos do sistema de arquivos podem ser usados dentro
do nosso aplicativo Node, exigindo-o como mostrado aqui.
E, em seguida, esses módulos de sistema de arquivos suporta muitos métodos,
incluindo um método para verificar se o arquivo existe no sistema de arquivos local ou não.
Assim, o fs.exists tomará
o FilePath como o primeiro parâmetro e o segundo parâmetro é
uma função de retorno de chamada que irá voltar com um parâmetro que podemos nomeá-lo como existe.
Este parâmetro, existe, será verdadeiro se o arquivo
existir e será falso se o arquivo não existir dentro do sistema de arquivos local.
Da mesma forma, você pode ler a partir do arquivo criando um fluxo de leitura dado o caminho do arquivo.
Então você pode dizer fs.createReadStream e
FilePath e isso pode ser canalizado para a mensagem de resposta.
Assim, o arquivo será lido a partir do arquivo
dado pelo FilePath e, em seguida, o conteúdo será
colocado no corpo da mensagem de resposta chamando uma função encadeada como mostrado aqui.
Então, estes são alguns exemplos de alguns módulos nó núcleo que será muito
útil quando estamos construindo um servidor HTTP usando Node.
Agora, que entendemos alguns detalhes sobre o servidor HTTP e como ele pode ser construído,
vamos para o exercício,
onde vamos construir um servidor HTTP nó simples que primeiro irá servir
algumas informações básicas e, em seguida, vamos servir arquivos
que existem em uma pasta pública em nosso projeto.