1
00:00:03,930 --> 00:00:06,395
Na palestra anterior,

2
00:00:06,395 --> 00:00:14,130
aprendemos sobre os fundamentos da rede, incluindo detalhes do protocolo HTTP.

3
00:00:14,130 --> 00:00:20,805
Agora, vamos olhar para como Node pode ser usado para construir um servidor HTTP.

4
00:00:20,805 --> 00:00:28,420
Este é o lugar onde o módulo HTTP núcleo que é construído em Node vem em nossa ajuda.

5
00:00:28,420 --> 00:00:33,820
Além disso, vamos olhar para um par de outros módulos nó núcleo que são úteis para a

6
00:00:33,820 --> 00:00:40,390
construção de um servidor HTTP usando Node.

7
00:00:40,390 --> 00:00:42,730
Então, como fazemos uso do módulo Node HTTP?

8
00:00:42,730 --> 00:00:50,045
Como eu mencionei, o módulo HTTP é um dos módulos principais que são incorporados no nó.

9
00:00:50,045 --> 00:00:53,275
Então, este é um módulo de rede principal que suporta

10
00:00:53,275 --> 00:00:58,475
uma base de alto desempenho para pilha HTTP.

11
00:00:58,475 --> 00:01:02,440
Então, usar o módulo dentro do nosso aplicativo Node requer

12
00:01:02,440 --> 00:01:06,430
que importemos o módulo para a nossa aplicação.

13
00:01:06,430 --> 00:01:12,190
Então isso é o que fazemos dizendo const HTTP = exigem e,

14
00:01:12,190 --> 00:01:15,120
o nome do módulo HTTP lá.

15
00:01:15,120 --> 00:01:17,260
Agora, uma vez que o módulo é importado, em

16
00:01:17,260 --> 00:01:24,330
seguida, este módulo HTTP suporta uma função CreateServer que toma

17
00:01:24,330 --> 00:01:29,500
, como um parâmetro, uma função que atua como

18
00:01:29,500 --> 00:01:32,890
uma função de retorno de chamada para o módulo CreateServer e

19
00:01:32,890 --> 00:01:37,240
esta função tem dois parâmetros: request e response.

20
00:01:37,240 --> 00:01:40,120
A solicitação é a mensagem de solicitação que vem do

21
00:01:40,120 --> 00:01:44,380
lado do cliente e podemos analisar a mensagem de solicitação e, em seguida, extrair

22
00:01:44,380 --> 00:01:48,010
uma grande quantidade de informações da mensagem de solicitação e usá-lo para

23
00:01:48,010 --> 00:01:51,850
tomar decisões sobre como construímos a mensagem de resposta correspondente a isso.

24
00:01:51,850 --> 00:01:56,665
A mensagem de resposta é construída usando o segundo parâmetro aqui, o res,

25
00:01:56,665 --> 00:02:01,855
no qual podemos construir os vários valores de cabeçalho para a

26
00:02:01,855 --> 00:02:08,830
nossa mensagem de resposta HTTP e também o corpo da mensagem de resposta HTTP.

27
00:02:08,830 --> 00:02:10,120
Agora, para iniciar o servidor,

28
00:02:10,120 --> 00:02:11,725
uma vez que você cria o servidor,

29
00:02:11,725 --> 00:02:16,030
então você diria server.listen e, em seguida, fornecer o número da porta

30
00:02:16,030 --> 00:02:20,420
e o nome do host para o servidor e que iniciará nosso servidor.

31
00:02:20,420 --> 00:02:27,520
Analisaremos alguns detalhes no exercício de exemplos que se segue a esta palestra.

32
00:02:27,520 --> 00:02:32,770
Como mencionei, as informações de mensagem de solicitação de entrada estão disponíveis

33
00:02:32,770 --> 00:02:38,130
através do parâmetro req que a função leva no método CreateServer.

34
00:02:38,130 --> 00:02:40,480
Então, o req ou pedido,

35
00:02:40,480 --> 00:02:42,460
se você quiser dar-lhe nome completo,

36
00:02:42,460 --> 00:02:46,120
você pode chamá-lo como um pedido, mas em geral descobrimos que em

37
00:02:46,120 --> 00:02:50,425
exemplos usamos req para representar a mensagem de solicitação.

38
00:02:50,425 --> 00:02:57,462
Ele suporta nas propriedades do objeto Javascript como o cabeçalho,

39
00:02:57,462 --> 00:03:02,225
o corpo e também várias informações que podem ser extraídas,

40
00:03:02,225 --> 00:03:09,350
o URL e o método que foi solicitado por esse site cliente.

41
00:03:09,350 --> 00:03:13,240
E, em resposta, você constrói a resposta usando

42
00:03:13,240 --> 00:03:18,424
o objeto Javascript resposta que suporta essa função SetHeader,

43
00:03:18,424 --> 00:03:23,570
a função StatusCode que pode ser definida para o código de status da mensagem de resposta.

44
00:03:23,570 --> 00:03:26,235
E então você escreveria a mensagem dizendo

45
00:03:26,235 --> 00:03:29,440
res.write e você terminaria a mensagem dizendo

46
00:03:29,440 --> 00:03:35,785
res.end e isso leva a parte final do corpo para a mensagem.

47
00:03:35,785 --> 00:03:40,225
O corpo pode ser texto padrão ou HTML ou

48
00:03:40,225 --> 00:03:47,369
qualquer outra informação que você deseja incluir dentro do corpo da mensagem de resposta.

49
00:03:47,369 --> 00:03:49,780
Mas uma vez que o res.end é chamado,

50
00:03:49,780 --> 00:03:54,460
a resposta é enviada de volta para o cliente a partir do servidor HTTP.

51
00:03:54,460 --> 00:03:59,185
Dois outros módulos de núcleo que são úteis para nós

52
00:03:59,185 --> 00:04:04,295
quando estamos construindo o servidor HTTP nó é o módulo de caminho nó.

53
00:04:04,295 --> 00:04:09,145
O módulo de caminho nos permite especificar o caminho para um arquivo e, em seguida,

54
00:04:09,145 --> 00:04:14,375
examinar se o arquivo existe ou examinar mais detalhes sobre um arquivo.

55
00:04:14,375 --> 00:04:17,620
Por exemplo, a extensão do arquivo,

56
00:04:17,620 --> 00:04:19,185
nome e assim por diante.

57
00:04:19,185 --> 00:04:22,000
Assim, o módulo de caminho pode ser usado dentro da

58
00:04:22,000 --> 00:04:26,360
nossa aplicação, exigindo o módulo de caminho como mostrado aqui.

59
00:04:26,360 --> 00:04:28,360
E então, isso suporta métodos,

60
00:04:28,360 --> 00:04:29,990
como, por exemplo, path.resolve,

61
00:04:29,990 --> 00:04:33,940
que irá converter um caminho relativo em

62
00:04:33,940 --> 00:04:38,620
um caminho absoluto que todo o caminho para o arquivo.

63
00:04:38,620 --> 00:04:43,930
Você também pode verificar o nome da extensão para o arquivo chamando a

64
00:04:43,930 --> 00:04:47,830
função path.extname e fornecer o caminho do arquivo que

65
00:04:47,830 --> 00:04:52,640
examinará a extensão do nome do arquivo.

66
00:04:52,640 --> 00:04:55,870
Da mesma forma, o módulo do sistema de arquivos,

67
00:04:55,870 --> 00:04:57,970
novamente um módulo núcleo em Node,

68
00:04:57,970 --> 00:05:00,670
nos permitirá ler e gravar

69
00:05:00,670 --> 00:05:04,805
arquivos que existem no sistema de arquivos local no computador.

70
00:05:04,805 --> 00:05:08,725
Assim, os módulos do sistema de arquivos podem ser usados dentro

71
00:05:08,725 --> 00:05:13,480
do nosso aplicativo Node, exigindo-o como mostrado aqui.

72
00:05:13,480 --> 00:05:16,765
E, em seguida, esses módulos de sistema de arquivos suporta muitos métodos,

73
00:05:16,765 --> 00:05:21,460
incluindo um método para verificar se o arquivo existe no sistema de arquivos local ou não.

74
00:05:21,460 --> 00:05:24,190
Assim, o fs.exists tomará

75
00:05:24,190 --> 00:05:28,165
o FilePath como o primeiro parâmetro e o segundo parâmetro é

76
00:05:28,165 --> 00:05:35,530
uma função de retorno de chamada que irá voltar com um parâmetro que podemos nomeá-lo como existe.

77
00:05:35,530 --> 00:05:38,410
Este parâmetro, existe, será verdadeiro se o arquivo

78
00:05:38,410 --> 00:05:43,595
existir e será falso se o arquivo não existir dentro do sistema de arquivos local.

79
00:05:43,595 --> 00:05:50,390
Da mesma forma, você pode ler a partir do arquivo criando um fluxo de leitura dado o caminho do arquivo.

80
00:05:50,390 --> 00:05:53,585
Então você pode dizer fs.createReadStream e

81
00:05:53,585 --> 00:05:58,240
FilePath e isso pode ser canalizado para a mensagem de resposta.

82
00:05:58,240 --> 00:06:01,175
Assim, o arquivo será lido a partir do arquivo

83
00:06:01,175 --> 00:06:05,290
dado pelo FilePath e, em seguida, o conteúdo será

84
00:06:05,290 --> 00:06:13,220
colocado no corpo da mensagem de resposta chamando uma função encadeada como mostrado aqui.

85
00:06:13,220 --> 00:06:17,920
Então, estes são alguns exemplos de alguns módulos nó núcleo que será muito

86
00:06:17,920 --> 00:06:23,710
útil quando estamos construindo um servidor HTTP usando Node.

87
00:06:23,710 --> 00:06:29,223
Agora, que entendemos alguns detalhes sobre o servidor HTTP e como ele pode ser construído,

88
00:06:29,223 --> 00:06:30,690
vamos para o exercício,

89
00:06:30,690 --> 00:06:36,880
onde vamos construir um servidor HTTP nó simples que primeiro irá servir

90
00:06:36,880 --> 00:06:41,950
algumas informações básicas e, em seguida, vamos servir arquivos

91
00:06:41,950 --> 00:06:48,170
que existem em uma pasta pública em nosso projeto.