1
00:00:03,930 --> 00:00:06,395
En la conferencia anterior,

2
00:00:06,395 --> 00:00:14,130
aprendimos acerca de los aspectos esenciales de la creación de redes, incluyendo detalles del protocolo HTTP.

3
00:00:14,130 --> 00:00:20,805
Ahora, vamos a ver cómo se puede utilizar el nodo para construir un servidor HTTP.

4
00:00:20,805 --> 00:00:28,420
Aquí es donde el módulo HTTP principal que está integrado en Node viene en nuestra ayuda.

5
00:00:28,420 --> 00:00:33,820
Además, vamos a ver un par de otros módulos de nodo núcleo que son útiles para

6
00:00:33,820 --> 00:00:40,390
construir un servidor HTTP desde el uso de Node.

7
00:00:40,390 --> 00:00:42,730
Entonces, ¿cómo hacemos uso del módulo HTTP del nodo?

8
00:00:42,730 --> 00:00:50,045
Como mencioné, el módulo HTTP es uno de los módulos principales que están integrados en el nodo.

9
00:00:50,045 --> 00:00:53,275
Por lo tanto, este es un módulo de red principal que admite

10
00:00:53,275 --> 00:00:58,475
una base de alto rendimiento para la pila HTTP.

11
00:00:58,475 --> 00:01:02,440
Por lo tanto, usar el módulo dentro de nuestra aplicación Node requiere

12
00:01:02,440 --> 00:01:06,430
que importemos el módulo en nuestra aplicación.

13
00:01:06,430 --> 00:01:12,190
Entonces esto es lo que hacemos diciendo const HTTP = require y,

14
00:01:12,190 --> 00:01:15,120
el nombre del módulo HTTP allí.

15
00:01:15,120 --> 00:01:17,260
Ahora, una vez importado el módulo

16
00:01:17,260 --> 00:01:24,330
, este módulo HTTP soporta una función CreateServer que toma,

17
00:01:24,330 --> 00:01:29,500
como parámetro, una función que actúa como

18
00:01:29,500 --> 00:01:32,890
una función de devolución de llamada para el módulo CreateServer y

19
00:01:32,890 --> 00:01:37,240
esta función tiene dos parámetros: solicitud y respuesta.

20
00:01:37,240 --> 00:01:40,120
La solicitud es el mensaje de solicitud que viene desde

21
00:01:40,120 --> 00:01:44,380
el lado del cliente y podemos analizar el mensaje de solicitud y luego extraer

22
00:01:44,380 --> 00:01:48,010
mucha información del mensaje de solicitud y usarlo para tomar

23
00:01:48,010 --> 00:01:51,850
decisiones sobre cómo construimos el mensaje de respuesta correspondiente a eso.

24
00:01:51,850 --> 00:01:56,665
El mensaje de respuesta se construye utilizando el segundo parámetro aquí, el res,

25
00:01:56,665 --> 00:02:01,855
en el que podemos construir los diversos valores de encabezado para

26
00:02:01,855 --> 00:02:08,830
nuestro mensaje de respuesta HTTP y también el cuerpo del mensaje de respuesta HTTP.

27
00:02:08,830 --> 00:02:10,120
Ahora, para iniciar el servidor,

28
00:02:10,120 --> 00:02:11,725
una vez que cree el servidor,

29
00:02:11,725 --> 00:02:16,030
entonces usted diría server.listen y luego proporcionar el número de puerto

30
00:02:16,030 --> 00:02:20,420
y el nombre del host para el servidor y eso iniciará nuestro servidor.

31
00:02:20,420 --> 00:02:27,520
Vamos a ver algunos detalles en el ejercicio de ejemplos que sigue a esta conferencia.

32
00:02:27,520 --> 00:02:32,770
Como mencioné, la información del mensaje de solicitud entrante está disponible

33
00:02:32,770 --> 00:02:38,130
a través del parámetro req que la función toma en el método CreateServer.

34
00:02:38,130 --> 00:02:40,480
Por lo tanto, el req o solicitud,

35
00:02:40,480 --> 00:02:42,460
si desea darle nombre completo,

36
00:02:42,460 --> 00:02:46,120
puede llamarlo como una solicitud, pero en general hemos encontrado que en

37
00:02:46,120 --> 00:02:50,425
ejemplos usamos req para representar el mensaje de solicitud.

38
00:02:50,425 --> 00:02:57,462
Es compatible con las propiedades del objeto Javascript como

39
00:02:57,462 --> 00:03:02,225
el encabezado, el cuerpo y también varias informaciones que se pueden extraer,

40
00:03:02,225 --> 00:03:09,350
la URL y el método que ha sido solicitado por ese sitio cliente.

41
00:03:09,350 --> 00:03:13,240
Y, en respuesta, construye la respuesta usando

42
00:03:13,240 --> 00:03:18,424
el objeto Javascript de respuesta que admite esa función setHeader,

43
00:03:18,424 --> 00:03:23,570
la función StatusCode que se puede establecer en el código de estado del mensaje de respuesta.

44
00:03:23,570 --> 00:03:26,235
Y luego escribirías el mensaje diciendo

45
00:03:26,235 --> 00:03:29,440
res.write y terminarías el mensaje diciendo

46
00:03:29,440 --> 00:03:35,785
res.end y eso toma la parte final del cuerpo para el mensaje.

47
00:03:35,785 --> 00:03:40,225
El cuerpo puede ser texto estándar o HTML o

48
00:03:40,225 --> 00:03:47,369
cualquier otra información que desee incluir dentro del cuerpo del mensaje de respuesta.

49
00:03:47,369 --> 00:03:49,780
Pero una vez que se llama al res.end,

50
00:03:49,780 --> 00:03:54,460
la respuesta se envía de vuelta al cliente desde el servidor HTTP.

51
00:03:54,460 --> 00:03:59,185
Otros dos módulos principales que son útiles para nosotros

52
00:03:59,185 --> 00:04:04,295
cuando estamos construyendo el servidor HTTP del nodo es el módulo de ruta del nodo.

53
00:04:04,295 --> 00:04:09,145
El módulo de ruta nos permite especificar la ruta de acceso a un archivo y luego

54
00:04:09,145 --> 00:04:14,375
examinar si el archivo existe o examinar más detalles sobre un archivo.

55
00:04:14,375 --> 00:04:17,620
Por ejemplo, la extensión del archivo,

56
00:04:17,620 --> 00:04:19,185
nombre, etc.

57
00:04:19,185 --> 00:04:22,000
Por lo tanto, el módulo de ruta se puede utilizar dentro de

58
00:04:22,000 --> 00:04:26,360
nuestra aplicación al requerir el módulo de ruta como se muestra aquí.

59
00:04:26,360 --> 00:04:28,360
Y luego, esto admite métodos,

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

61
00:04:29,990 --> 00:04:33,940
que convertirá una ruta relativa en

62
00:04:33,940 --> 00:04:38,620
una ruta absoluta que toda la ruta al archivo.

63
00:04:38,620 --> 00:04:43,930
También puede comprobar el nombre de la extensión del archivo llamando a la

64
00:04:43,930 --> 00:04:47,830
función path.extname y proporcionar la ruta de acceso del archivo que

65
00:04:47,830 --> 00:04:52,640
examinará la extensión del nombre de archivo.

66
00:04:52,640 --> 00:04:55,870
Del mismo modo, el módulo del sistema de archivos, de

67
00:04:55,870 --> 00:04:57,970
nuevo un módulo central en Node,

68
00:04:57,970 --> 00:05:00,670
nos permitirá leer y escribir

69
00:05:00,670 --> 00:05:04,805
archivos que existen en el sistema de archivos local en la computadora.

70
00:05:04,805 --> 00:05:08,725
Por lo tanto, los módulos del sistema de archivos se pueden utilizar dentro de

71
00:05:08,725 --> 00:05:13,480
nuestra aplicación Node solicitándolo como se muestra aquí.

72
00:05:13,480 --> 00:05:16,765
Y luego, estos módulos del sistema de archivos admiten muchos métodos,

73
00:05:16,765 --> 00:05:21,460
incluido un método para verificar si el archivo existe en el sistema de archivos local o no.

74
00:05:21,460 --> 00:05:24,190
Por lo tanto, fs.exists tomará

75
00:05:24,190 --> 00:05:28,165
el FilePath como el primer parámetro y el segundo parámetro es

76
00:05:28,165 --> 00:05:35,530
una función de devolución de llamada que volverá con un parámetro que podemos nombrarlo como existe.

77
00:05:35,530 --> 00:05:38,410
Este parámetro, existe, será verdadero si el archivo

78
00:05:38,410 --> 00:05:43,595
existe y será falso si el archivo no existe dentro del sistema de archivos local.

79
00:05:43,595 --> 00:05:50,390
Del mismo modo, puede leer desde el archivo creando una secuencia de lectura dada la ruta del archivo.

80
00:05:50,390 --> 00:05:53,585
Por lo tanto, puede decir fs.createReadStream y

81
00:05:53,585 --> 00:05:58,240
FilePath y esto se puede canalizar al mensaje de respuesta.

82
00:05:58,240 --> 00:06:01,175
Así que el archivo se leerá desde el archivo

83
00:06:01,175 --> 00:06:05,290
dado por FilePath y luego el contenido se pondrá

84
00:06:05,290 --> 00:06:13,220
en el cuerpo del mensaje de respuesta llamando a una función encadenada como se muestra aquí.

85
00:06:13,220 --> 00:06:17,920
Por lo tanto, estos son algunos ejemplos de algunos módulos de nodo núcleo que serán muy

86
00:06:17,920 --> 00:06:23,710
útiles cuando estamos construyendo un servidor HTTP usando Node.

87
00:06:23,710 --> 00:06:29,223
Ahora, que entendemos algunos detalles sobre el servidor HTTP y cómo se puede construir,

88
00:06:29,223 --> 00:06:30,690
vamos al ejercicio,

89
00:06:30,690 --> 00:06:36,880
donde construiremos un servidor HTTP simple que primero servirá

90
00:06:36,880 --> 00:06:41,950
información básica y luego serviremos los archivos

91
00:06:41,950 --> 00:06:48,170
que existen en una carpeta pública en nuestro proyecto.