1
00:00:00,000 --> 00:00:04,946
[MUSIC]

2
00:00:04,946 --> 00:00:09,700
Trong bài tập này, chúng ta sẽ khám phá một số module mã Node.

3
00:00:09,700 --> 00:00:15,326
Đặc biệt, chúng ta sẽ xem xét mô-đun HTTP được tích hợp vào Node và

4
00:00:15,326 --> 00:00:20,411
sử dụng mô-đun HTTP để cấu hình và khởi động một máy chủ web đơn giản.

5
00:00:20,411 --> 00:00:28,090
Chúng ta cũng sẽ xem xét làm thế nào chúng ta có thể phục vụ lên các tập tin tĩnh từ máy chủ HTTP Node của chúng tôi.

6
00:00:28,090 --> 00:00:32,510
Chúng tôi cũng sẽ xem xét rằng mô-đun hệ thống tập tin và mô-đun đường dẫn và

7
00:00:32,510 --> 00:00:39,640
làm thế nào họ có thể giúp chúng tôi để phục vụ các tập tin tĩnh trong máy chủ HTTP dựa trên Node của chúng tôi.

8
00:00:39,640 --> 00:00:43,790
Vì vậy, chúng ta hãy khám phá một số mã Node module trong bài tập này.

9
00:00:45,710 --> 00:00:51,050
Để bắt đầu với bài tập này, hãy đi đến một vị trí thuận tiện trên máy tính của bạn.

10
00:00:51,050 --> 00:00:54,820
Vì vậy, chúng tôi sẽ đi đến thư mục NodeJS mà chúng tôi đã tạo ra trong một trong

11
00:00:54,820 --> 00:00:56,400
các bài tập trước đó.

12
00:00:56,400 --> 00:01:02,663
Và trong thư mục NodeJS, tôi sẽ tạo ra một thư mục mới có tên là node-http.

13
00:01:02,663 --> 00:01:07,370
Và sau đó, chúng tôi sẽ thiết lập này như là một ứng dụng Node.

14
00:01:07,370 --> 00:01:11,440
Ngoài ra, di chuyển vào thư mục node-http,

15
00:01:11,440 --> 00:01:16,770
chúng ta hãy tạo một thư mục con có tên công cộng mà sẽ tiếp tục một

16
00:01:16,770 --> 00:01:23,080
số các tập tin html mà chúng tôi sẽ phục vụ từ ứng dụng Node HTTP của chúng tôi.

17
00:01:23,080 --> 00:01:28,072
Bây giờ di chuyển đến một thiết bị đầu cuối, điều hướng đến nút,

18
00:01:32,012 --> 00:01:33,478
thư mục -http.

19
00:01:38,222 --> 00:01:43,320
Và chúng ta hãy khởi tạo thư mục này để có trong ứng dụng của chúng tôi.

20
00:01:43,320 --> 00:01:45,901
Vì vậy, chúng tôi sẽ bắt đầu với npm init và

21
00:01:45,901 --> 00:01:49,734
khởi tạo gói đó để tập tin JSON của chúng tôi ở đây.

22
00:01:49,734 --> 00:01:56,450
Và sau đó chúng tôi sẽ cung cấp cho các gói tên như node-http và

23
00:01:56,450 --> 00:02:00,684
chấp nhận phiên bản tiêu chuẩn, và

24
00:02:00,684 --> 00:02:06,390
mô tả là Node HTTP Module Ví dụ.

25
00:02:06,390 --> 00:02:10,830
Và điểm bắt đầu là index.js, không có lệnh kiểm tra,

26
00:02:10,830 --> 00:02:14,890
không có kho git cho thời điểm này, và tác giả,

27
00:02:15,960 --> 00:02:21,460
gõ tên của bạn, và chấp nhận phần còn lại như là.

28
00:02:23,360 --> 00:02:27,240
Và điều đó sẽ tạo ra các gói cho một tập tin biểu hiện JSON.

29
00:02:27,240 --> 00:02:32,310
Bây giờ chúng ta hãy mở dự án này trong trình soạn thảo yêu thích của chúng tôi.

30
00:02:32,310 --> 00:02:40,860
Vì vậy, hãy để tôi khởi động mã Visual Studio của tôi tại thư mục này.

31
00:02:40,860 --> 00:02:44,919
Và trong mã Visual Studio, chúng ta hãy đi đến gói đến tệp JSON của chúng tôi.

32
00:02:44,919 --> 00:02:51,179
Và sau đó chúng tôi sẽ thêm vào một kịch bản để các gói,

33
00:02:51,179 --> 00:02:54,936
để tập tin JSON của chúng tôi gọi là start và

34
00:02:54,936 --> 00:02:58,850
mà sẽ thực hiện chỉ mục nút.

35
00:02:58,850 --> 00:03:02,710
Và hãy nhớ đặt một dấu phẩy sau khi kiểm tra hitch.

36
00:03:04,300 --> 00:03:08,797
Và lưu các thay đổi vào tệp package.json.

37
00:03:08,797 --> 00:03:11,805
Bây giờ ở nơi Project,

38
00:03:11,805 --> 00:03:16,720
tạo một tập tin mới có tên là index.js.

39
00:03:16,720 --> 00:03:24,920
Chúng tôi sẽ cấu hình index.js này để sử dụng mô-đun HTTP Node.

40
00:03:24,920 --> 00:03:29,825
Vì vậy, trong tập tin này, chúng ta hãy gõ vào const

41
00:03:29,825 --> 00:03:34,160
http = require (“http”).

42
00:03:34,160 --> 00:03:38,485
Vì vậy, bạn có thể thấy rằng chúng tôi đang sử dụng mô-đun mã HTTP, và

43
00:03:38,485 --> 00:03:44,484
chúng tôi đang yêu cầu nó bằng cách chỉ định tên của mô-đun mã HTTP ở đó.

44
00:03:46,647 --> 00:03:48,994
Ngoài ra, chúng ta hãy khai báo,

45
00:03:52,843 --> 00:03:57,551
Một vài hằng số ở đây và sau đó,

46
00:03:59,779 --> 00:04:02,931
Chúng tôi sẽ gọi hostname và

47
00:04:02,931 --> 00:04:08,580
số cổng là 3000 theo mặc định.

48
00:04:08,580 --> 00:04:10,990
Bây giờ chúng ta hãy thiết lập máy chủ.

49
00:04:10,990 --> 00:04:18,330
Để thiết lập máy chủ, chúng ta sẽ nói const server = http.

50
00:04:18,330 --> 00:04:24,210
Mô-đun HTTP hỗ trợ một phương pháp gọi là CreateServer,

51
00:04:24,210 --> 00:04:28,312
vì vậy họ sẽ sử dụng phương pháp CreateServer trên đó.

52
00:04:28,312 --> 00:04:36,670
Phương pháp CreateServer này sẽ lấy một hàm làm tham số và

53
00:04:36,670 --> 00:04:40,683
hàm này lấy hai

54
00:04:40,683 --> 00:04:46,560
giá trị làm tham số, request và response.

55
00:04:46,560 --> 00:04:49,960
Và như bạn có thể thấy, tôi đang viết một chức năng mũi tên ở đây.

56
00:04:49,960 --> 00:04:54,770
Vì vậy, các yêu cầu và phản hồi là hai tham số cho các chức năng mà chúng tôi cung cấp

57
00:04:54,770 --> 00:04:59,290
như là một tham số cho các CreateServer phương pháp ở đây.

58
00:04:59,290 --> 00:05:04,224
Và bên trong điều này, chúng ta sẽ nói

59
00:05:04,224 --> 00:05:10,580
console.log (req.headers).

60
00:05:10,580 --> 00:05:18,892
Vì vậy, ở đây, req và res là yêu cầu HTTP đến máy chủ.

61
00:05:18,892 --> 00:05:22,548
Và họ loại phản ứng đẻ trứng đối tượng đó sẽ

62
00:05:22,548 --> 00:05:26,443
được xây dựng bởi máy chủ này và trả về cho khách hàng

63
00:05:26,443 --> 00:05:30,820
kết nối với máy chủ HTTP này mà chúng tôi đang tạo ra ở đây.

64
00:05:30,820 --> 00:05:35,120
Vì vậy, yêu cầu là yêu cầu đến từ bất kỳ trình duyệt hoặc

65
00:05:35,120 --> 00:05:39,700
từ bất cứ nơi nào đang cố gắng truy cập vào máy chủ này mà chúng tôi sẽ bắt đầu

66
00:05:39,700 --> 00:05:45,590
bằng cách sử dụng ứng dụng HTTP Node mà chúng tôi đang phát triển ở đây.

67
00:05:45,590 --> 00:05:47,500
Vì vậy, từ yêu cầu,

68
00:05:47,500 --> 00:05:53,190
đối tượng yêu cầu cho phép chúng ta truy cập vào các tiêu đề trong yêu cầu HTTP đến.

69
00:05:53,190 --> 00:05:55,690
Vì vậy, tôi sẽ đăng nhập các

70
00:05:55,690 --> 00:06:00,420
tiêu đề đến của yêu cầu HTTP đến bằng cách sử dụng console.log này.

71
00:06:00,420 --> 00:06:05,920
Chỉ để biết thông tin của tôi, chỉ để biết yêu cầu này đến từ đâu.

72
00:06:05,920 --> 00:06:11,948
Sau đó, chúng ta có thể xây dựng phản ứng bằng cách sử dụng res và

73
00:06:11,948 --> 00:06:16,739
điều này sẽ cung cấp cho chúng ta một phương pháp gọi là StatusCode.

74
00:06:16,739 --> 00:06:24,315
StatusCode sẽ cho phép chúng tôi thiết lập StatusCode cho thông báo phản hồi.

75
00:06:24,315 --> 00:06:28,026
Vì vậy, trong trường hợp này, tôi sẽ thiết lập StatusCode là 200.

76
00:06:28,026 --> 00:06:32,259
Nếu bạn nhớ lại từ các cuộc thảo luận trước đó về các yếu tố cần thiết của mạng,

77
00:06:32,259 --> 00:06:36,576
bạn sẽ biết rằng StatusCode của 200 có nghĩa là mọi thứ đều ổn.

78
00:06:36,576 --> 00:06:41,856
Và như vậy, chúng tôi thiết lập mã trạng thái ở đây cho thông báo phản hồi và

79
00:06:41,856 --> 00:06:46,763
sau đó chúng tôi cũng sẽ thiết lập tiêu đề cho thông báo phản hồi.

80
00:06:46,763 --> 00:06:51,984
Và một trong những nỗi sợ hãi tiêu đề mà chúng ta sẽ

81
00:06:51,984 --> 00:06:56,344
thiết lập được gọi là Content-Type.

82
00:06:56,344 --> 00:06:59,447
Và Content-Type,

83
00:06:59,447 --> 00:07:04,928
chúng tôi sẽ chỉ định điều này là 'text/html'.

84
00:07:04,928 --> 00:07:13,360
Vì vậy, cơ thể phản hồi sẽ chứa các dữ liệu dưới dạng html ở đây.

85
00:07:13,360 --> 00:07:18,740
Vì vậy, tiêu đề được thiết lập để thông báo cho khách hàng rằng bạn đang gửi

86
00:07:18,740 --> 00:07:25,160
trong phản hồi và nội dung được định dạng trong định dạng html.

87
00:07:25,160 --> 00:07:27,840
Và sau đó cuối cùng, chúng ta sẽ nói res.end ('').

88
00:07:27,840 --> 00:07:32,500
Vì vậy, điều này kết thúc phản ứng ở đây, và khi điều này được thực hiện,

89
00:07:32,500 --> 00:07:37,620
thông tin này sẽ được gửi lại cho khách hàng.

90
00:07:37,620 --> 00:07:45,992
Vì vậy, trong đây, hãy để tôi chỉ xây dựng một trang html trong dòng ở đây,

91
00:07:45,992 --> 00:07:52,754
vì vậy tôi sẽ nói <html> <body> <h1> <Xin chào,

92
00:07:52,754 --> 00:07:55,540
thế giới! </h1>.

93
00:07:58,328 --> 00:08:04,211
Và đóng thẻ h1, thẻ body,

94
00:08:04,211 --> 00:08:09,270
và thẻ html, ngay tại đó.

95
00:08:09,270 --> 00:08:13,850
Và đó là một phản hồi HTML hợp lệ có thể

96
00:08:13,850 --> 00:08:18,100
được gửi trở lại từ máy chủ của chúng tôi ở đây.

97
00:08:18,100 --> 00:08:23,730
Vì vậy, máy chủ này, như bạn mong đợi để chỉ đơn giản là đi gửi một thế giới hello cho khách hàng.

98
00:08:23,730 --> 00:08:28,320
Vì vậy, bây giờ chúng ta đã thiết lập máy chủ, chúng ta cần phải khởi động máy chủ này.

99
00:08:28,320 --> 00:08:32,350
Để khởi động máy chủ này trong lưu ý,

100
00:08:32,350 --> 00:08:37,930
chúng ta cần phải nói server.listen.

101
00:08:37,930 --> 00:08:43,330
Và điều này sẽ bắt đầu cổng nghe mà trên đó máy chủ sẽ lắng nghe các

102
00:08:43,330 --> 00:08:45,030
yêu cầu đến.

103
00:08:45,030 --> 00:08:50,050
Và điều này sẽ được bắt đầu tại số cổng cho cổng của tôi,

104
00:08:50,050 --> 00:08:53,910
mà chúng tôi đã thiết lập đã có ở đây trong cổng const.

105
00:08:53,910 --> 00:08:59,990
Và tham số thứ hai là tên máy chủ mà chúng tôi đã thiết lập trước đó.

106
00:08:59,990 --> 00:09:03,560
Và tham số thứ ba là một hàm sẽ được

107
00:09:04,720 --> 00:09:07,520
thực thi khi máy chủ khởi động.

108
00:09:07,520 --> 00:09:13,560
Trong chức năng này, chúng tôi chỉ cần đi để in ra các thông tin về máy chủ.

109
00:09:13,560 --> 00:09:18,505
Vì vậy, ở đây tôi sẽ chỉ nói console.log.

110
00:09:19,560 --> 00:09:22,110
Và trong console.log,

111
00:09:22,110 --> 00:09:26,640
tôi sẽ in ra thông tin vì vậy tôi sẽ sử dụng một báo giá ngược.

112
00:09:26,640 --> 00:09:30,876
Vì vậy, lưu ý việc sử dụng báo giá lại không phải là báo giá bình thường.

113
00:09:30,876 --> 00:09:35,103
Lý do tại sao chúng ta đang sử dụng đó là bởi vì chúng ta sẽ được sử dụng

114
00:09:35,103 --> 00:09:39,830
một số biến bên trong chuỗi mà chúng ta sẽ xây dựng ở đây.

115
00:09:39,830 --> 00:09:45,608
Vì vậy, chúng ta sẽ nói máy chủ chạy tại http://.

116
00:09:45,608 --> 00:09:50,965
Và sau đó chúng ta sẽ nói $ và

117
00:09:50,965 --> 00:09:55,780
sau đó tên máy chủ.

118
00:09:55,780 --> 00:09:59,582
Nhớ lại rằng tên máy chủ lưu trữ này, bạn đã tuyên bố trước đó.

119
00:09:59,582 --> 00:10:04,187
Và sau đó phần thứ hai,

120
00:10:04,187 --> 00:10:08,800
chúng ta sẽ nói: $ và cổng.

121
00:10:08,800 --> 00:10:14,130
Vì vậy, hai giá trị này sẽ được thay thế cho các giá trị tương ứng.

122
00:10:14,130 --> 00:10:17,370
Và kể từ khi chúng tôi đang bao bọc điều này trong dấu ngoặc kép trở lại.

123
00:10:17,370 --> 00:10:21,070
Và nếu bạn bao gồm một cái gì đó bên trong tăng đồng đô la,

124
00:10:21,070 --> 00:10:26,150
mà sẽ được thay thế bằng giá trị của nó trong chuỗi này ở đây.

125
00:10:28,230 --> 00:10:29,150
Đó là nó.

126
00:10:29,150 --> 00:10:33,990
Chúng tôi có một máy chủ HTTP đơn giản lên và chạy.

127
00:10:33,990 --> 00:10:37,480
Vì vậy, chúng ta hãy lưu những thay đổi này.

128
00:10:37,480 --> 00:10:42,920
Và chúng tôi sẽ đi và bắt đầu ứng dụng của chúng tôi và xem nó phục vụ những gì.

129
00:10:42,920 --> 00:10:47,010
Đi đến thiết bị đầu cuối, hãy gõ npm bắt đầu, và

130
00:10:47,010 --> 00:10:50,820
điều này sẽ khởi động ứng dụng của chúng tôi.

131
00:10:50,820 --> 00:10:54,020
Và chúng tôi nhận thấy rằng nó in nói của chúng tôi rằng máy chủ chạy

132
00:10:54,020 --> 00:10:57,420
tại http://localhost:3000.

133
00:10:57,420 --> 00:11:05,950
Bây giờ bạn có thể truy cập URL này bằng cách gõ nó vào thanh địa chỉ của bất kỳ trình duyệt nào.

134
00:11:05,950 --> 00:11:09,490
Vì vậy, hãy để tôi bắt đầu một cửa sổ trình duyệt Chrome và sau đó gõ này và

135
00:11:09,490 --> 00:11:11,340
xem những gì máy chủ sẽ trở lại.

136
00:11:19,160 --> 00:11:20,848
Bắt đầu một cửa sổ mới.

137
00:11:20,848 --> 00:11:27,260
Hãy để tôi chỉ cần gõ vào http://

138
00:11:30,028 --> 00:11:34,400
localhost:3000.

139
00:11:34,400 --> 00:11:39,490
Và điều đó sẽ trở lại một Hello World như chúng ta mong đợi.

140
00:11:39,490 --> 00:11:47,020
Bây giờ khi chúng tôi đi đến giao diện điều khiển bạn thấy rằng trên giao diện điều khiển có

141
00:11:48,820 --> 00:11:54,530
chi tiết của tiêu đề yêu cầu đến được in ra ở đây.

142
00:11:54,530 --> 00:11:56,650
Một số điều rất dễ dàng để xác định vị trí ở đây.

143
00:11:56,650 --> 00:12:02,290
Vì vậy, đây là máy chủ lưu trữ, localhost:3000, và bạn cũng thấy rằng “user agent”

144
00:12:02,290 --> 00:12:08,200
được đặt thành “Chrome” ở đây, phiên bản Chrome mà tôi đang sử dụng ở đây.

145
00:12:08,200 --> 00:12:14,470
Vì vậy, đó là một minh họa thú vị của thông điệp yêu cầu HTTP.

146
00:12:14,470 --> 00:12:19,860
Và những gì được chứa trong tiêu đề của thông điệp yêu cầu đến đây.

147
00:12:19,860 --> 00:12:24,700
Vì vậy, thú vị để quan sát những gì sever của bạn đang

148
00:12:24,700 --> 00:12:28,690
in ra trên màn hình ở đây.

149
00:12:28,690 --> 00:12:32,935
Với điều này, chúng tôi hoàn thành nửa đầu của bài tập này.

150
00:12:32,935 --> 00:12:38,895
Bây giờ chúng ta có thể khởi tạo ứng dụng này vào một kho lưu trữ Git,

151
00:12:38,895 --> 00:12:41,505
và sau đó lưu các thay đổi vào kho lưu trữ Git.

152
00:12:41,505 --> 00:12:44,695
Vậy chúng ta hãy tiếp tục và làm điều đó tiếp theo.

153
00:12:44,695 --> 00:12:51,435
Tại loại dấu nhắc, nhận được init, và khởi tạo kho lưu trữ.

154
00:12:51,435 --> 00:12:57,420
Và sau đó chúng ta sẽ nói trạng thái git và bạn thấy rằng hai tập tin này là mới.

155
00:12:57,420 --> 00:12:59,502
Vì vậy, chúng tôi sẽ nói git thêm.

156
00:12:59,502 --> 00:13:04,702
Và làm git commit

157
00:13:04,702 --> 00:13:15,260
-m “Node HTTP Ví dụ 1".

158
00:13:15,260 --> 00:13:19,260
Và sau đó kiểm tra điều này vào kho lưu trữ Git của chúng tôi.

159
00:13:19,260 --> 00:13:22,640
Bây giờ một công cụ khác rất hữu ích

160
00:13:22,640 --> 00:13:28,370
khi chúng ta đang nhìn vào các ứng dụng phía máy chủ được gọi là Postman.

161
00:13:28,370 --> 00:13:33,330
Bây giờ Postman có dạng phần mở rộng trình duyệt Chrome hoặc

162
00:13:33,330 --> 00:13:38,430
một công cụ độc lập mà bạn có thể tải xuống và cài đặt trên máy tính của mình.

163
00:13:38,430 --> 00:13:43,998
Vì vậy, để làm điều đó, trong trình duyệt của chúng tôi, hãy gõ http.

164
00:13:43,998 --> 00:13:47,425
getpostman.com.

165
00:13:47,425 --> 00:13:52,550
Và sau đó đây là nơi bạn có thể có được công

166
00:13:52,550 --> 00:13:57,660
cụ Postman cho hệ điều hành cụ thể của bạn và cài đặt nó.

167
00:13:57,660 --> 00:14:04,360
Công cụ Postman cho phép bạn tạo ra các yêu cầu HTTP và sau đó gửi chúng.

168
00:14:04,360 --> 00:14:09,960
Và nó cũng cung cấp cho bạn sự linh hoạt của việc thiết lập các tiêu đề cho

169
00:14:09,960 --> 00:14:12,520
yêu cầu HTTP của bạn trước khi bạn gửi nó vào.

170
00:14:12,520 --> 00:14:16,140
Và sau đó khi phản hồi trở lại, bạn có thể kiểm tra phản hồi

171
00:14:16,140 --> 00:14:20,500
bao gồm các tiêu đề của phản hồi trở lại từ phía máy chủ.

172
00:14:20,500 --> 00:14:23,160
Vì vậy, tôi thấy Postman rất hữu ích.

173
00:14:23,160 --> 00:14:25,410
Có một vài công cụ khác như thế này,

174
00:14:25,410 --> 00:14:30,040
nhưng Postman dường như là tốt nhất trên thị trường vào lúc này.

175
00:14:30,040 --> 00:14:35,010
Vì vậy, tôi sẽ sử dụng Postman trong phần còn lại của khóa học này.

176
00:14:35,010 --> 00:14:36,830
Nếu bạn không muốn cài đặt nó,

177
00:14:36,830 --> 00:14:41,720
bạn cũng có thể cài đặt phần mở rộng trình duyệt Chrome của Postman và sau đó sử dụng nó.

178
00:14:41,720 --> 00:14:45,260
Tôi sẽ tải về phiên bản macOS của Postman và

179
00:14:45,260 --> 00:14:49,130
sau đó cài đặt nó trên máy của tôi và sau đó sử dụng nó.

180
00:14:50,230 --> 00:14:54,280
Sau khi bạn đã cài đặt Postman, phiên bản độc lập hoặc tiện ích

181
00:14:54,280 --> 00:14:57,880
mở rộng trình duyệt Chrome, bạn có thể khởi động nó.

182
00:14:57,880 --> 00:15:02,210
Và bạn sẽ thấy rằng giao diện người dùng ít nhiều giống nhau đối với

183
00:15:02,210 --> 00:15:07,060
cả phiên bản chuẩn và phần mở rộng trình duyệt Chrome.

184
00:15:07,060 --> 00:15:10,955
Và một khi bạn có Postman lên và chạy,

185
00:15:10,955 --> 00:15:18,105
sau đó gõ vào hộp Yêu cầu URL,

186
00:15:18,105 --> 00:15:21,510
localhost:3000.

187
00:15:21,510 --> 00:15:24,090
Và gửi yêu cầu cho chính mình.

188
00:15:24,090 --> 00:15:28,990
Hãy chắc chắn rằng máy chủ HTTP Node của bạn là lên và chạy.

189
00:15:28,990 --> 00:15:30,440
Vì vậy, khi bạn gửi yêu cầu,

190
00:15:30,440 --> 00:15:36,100
bạn sẽ ngay lập tức nhận được một phản hồi từ máy chủ với mã HTML ở đây.

191
00:15:36,100 --> 00:15:38,170
Bây giờ lợi thế, như bạn thấy,

192
00:15:38,170 --> 00:15:43,480
với việc sử dụng Postman là bạn có thể thấy nội dung thực tế của thông điệp.

193
00:15:43,480 --> 00:15:49,380
Bạn cũng có thể xem các tiêu đề để xem những gì đã được gửi trở lại từ máy chủ.

194
00:15:49,380 --> 00:15:54,890
Bạn cũng có thể thiết lập rất nhiều chi tiết trong Postman khi bạn đang gửi.

195
00:15:54,890 --> 00:15:57,600
Yêu cầu từ máy chủ.

196
00:15:57,600 --> 00:16:02,930
Bây giờ nhiều người trong số này có thể không phải là rất dễ dàng để làm bằng cách sử dụng một cửa sổ trình duyệt tiêu chuẩn.

197
00:16:02,930 --> 00:16:07,092
Vì vậy, đó là lý do tại sao tôi thích sử dụng [không nghe được] để

198
00:16:07,092 --> 00:16:10,780
tạo ra các yêu cầu HTTP đến máy chủ của tôi.

199
00:16:10,780 --> 00:16:14,630
Và sau đó quan sát phản ứng trở lại từ phía máy chủ.

200
00:16:14,630 --> 00:16:20,490
Cũng lưu ý rằng nó hiển thị mã trạng thái ở đây và một số thông tin khác về

201
00:16:21,650 --> 00:16:26,140
yêu cầu và thời gian phản hồi từ phía máy chủ.

202
00:16:26,140 --> 00:16:31,760
Bây giờ chúng ta đã tạo ra máy chủ HTTP dựa trên nút đơn giản của nó, chúng

203
00:16:31,760 --> 00:16:39,380
ta hãy mở rộng nó hơn nữa, chúng ta hãy tạo ra một vài tệp HTML trong thư mục công cộng.

204
00:16:39,380 --> 00:16:43,632
Chúng tôi sẽ gọi nó là index.html.

205
00:16:43,632 --> 00:16:49,657
Và sau đó cũng aboutus.html,

206
00:16:49,657 --> 00:16:55,160
và sau đó chỉ cần bao gồm một số thông tin xương trần ở đây.

207
00:16:55,160 --> 00:17:00,809
Vì vậy, chúng tôi sẽ nói html, và

208
00:17:00,809 --> 00:17:08,160
tiêu đề như đây là index.html.

209
00:17:08,160 --> 00:17:15,790
Và sau đó chúng tôi sẽ gõ vào cơ thể của trang html.

210
00:17:15,790 --> 00:17:21,044
Nói h1 Index.html và

211
00:17:21,044 --> 00:17:26,298
cơ thể và sau đó đây là

212
00:17:26,298 --> 00:17:32,346
nội dung của tập tin này.

213
00:17:32,346 --> 00:17:36,187
Một số mã html cơ bản ở đây, hãy để tôi sao chép này và

214
00:17:36,187 --> 00:17:40,040
sau đó dán cũng vào trang aboutus.html.

215
00:17:58,607 --> 00:18:02,560
Và nội dung của tệp aboutus.html, đó là nó.

216
00:18:02,560 --> 00:18:05,310
Chúng tôi chỉ tạo ra hai trang HTML, và

217
00:18:05,310 --> 00:18:09,840
đây là những trang HTML tĩnh mà chúng tôi đã tạo ra trong thư mục công cộng.

218
00:18:09,840 --> 00:18:16,800
Bây giờ, chúng ta có thể thiết lập máy chủ HTTP node của chúng tôi để có thể phục vụ lên các trang tĩnh?

219
00:18:16,800 --> 00:18:24,030
Vì vậy, đây là những gì chúng ta sẽ cấu hình trong phần thứ hai của bài tập này.

220
00:18:24,030 --> 00:18:27,928
Vì vậy, đi trở lại tập tin index.js,

221
00:18:27,928 --> 00:18:32,244
ngoài các mô-đun mã HTTP,

222
00:18:32,244 --> 00:18:38,660
tôi cũng sẽ nhập khẩu mô-đun mã hệ thống tập tin.

223
00:18:45,192 --> 00:18:49,920
Và mô-đun mã đường dẫn đó.

224
00:18:51,230 --> 00:18:56,560
Đường dẫn cho phép bạn chỉ định một phần của tệp trong hệ thống tệp cục bộ của bạn.

225
00:18:56,560 --> 00:18:59,430
Mô-đun hệ thống tập tin cho phép bạn đọc và

226
00:18:59,430 --> 00:19:02,330
ghi các tập tin từ hệ thống tập tin cục bộ của bạn.

227
00:19:02,330 --> 00:19:08,880
Vì vậy, với điều này, họ sẽ nói máy chủ liên tục, Http.CreateServer.

228
00:19:08,880 --> 00:19:13,583
Đối với đăng nhập giao diện điều khiển, thay vì gõ trong toàn bộ tiêu đề yêu cầu,

229
00:19:13,583 --> 00:19:17,378
tôi sẽ chỉ cần gõ vào thông tin vừa đủ, vì vậy

230
00:19:17,378 --> 00:19:24,212
tôi sẽ nói, Yêu cầu,

231
00:19:29,291 --> 00:19:32,329
Chỉ cần URL của yêu cầu đó.

232
00:19:39,786 --> 00:19:41,195
Theo phương pháp.

233
00:19:46,917 --> 00:19:51,218
Vì vậy, các phương pháp sẽ là hoặc nhận được cổng bài hoặc xóa các phương pháp.

234
00:19:51,218 --> 00:19:56,450
Vì vậy, điều này sẽ ghi lại thông tin này.

235
00:19:56,450 --> 00:20:01,478
Bây giờ, những gì chúng ta sẽ làm là thay vì gửi

236
00:20:01,478 --> 00:20:06,440
phản ứng này, phản ứng hello world chuẩn.

237
00:20:06,440 --> 00:20:11,176
Ở đây, chúng ta sẽ kiểm tra các phương pháp và

238
00:20:11,176 --> 00:20:16,600
sau đó chúng ta sẽ nói nếu req.method là bằng GET.

239
00:20:16,600 --> 00:20:21,689
Vì vậy, chúng tôi sẽ chỉ phục vụ các yêu cầu GET trong ví dụ này.

240
00:20:25,904 --> 00:20:28,750
Nếu không, chúng tôi sẽ nói rằng có một nếu.

241
00:20:28,750 --> 00:20:34,035
Vì vậy, nếu có một yêu cầu GET mà đi vào,

242
00:20:34,035 --> 00:20:36,911
sau đó chúng tôi sẽ kiểm tra,

243
00:20:42,139 --> 00:20:47,577
URL mà đi vào,

244
00:20:47,577 --> 00:20:55,304
vì vậy chúng tôi sẽ nói nếu req.url là/,

245
00:20:55,304 --> 00:21:03,615
chúng tôi sẽ nói FileURL bằng html.

246
00:21:03,615 --> 00:21:06,645
Vì vậy, nếu bạn không nhận được một tên tập tin cụ thể nhưng

247
00:21:06,645 --> 00:21:10,380
bạn chỉ cần gửi yêu cầu đến mã máy chủ địa phương 3000.

248
00:21:10,380 --> 00:21:15,371
Nó sẽ mặc định cho index.html,

249
00:21:15,371 --> 00:21:22,460
nếu không nó sẽ nói FileURL bằng req.url.

250
00:21:24,650 --> 00:21:28,148
Vì vậy, theo cách này, bạn đã xây dựng tập tin vào máy chủ.

251
00:21:28,148 --> 00:21:35,929
Bây giờ, chúng ta sẽ nói Chúng ta sẽ tìm thấy đường dẫn của tập tin,

252
00:21:35,929 --> 00:21:41,279
chúng ta sẽ nói đường dẫn, Giải quyết,

253
00:21:41,279 --> 00:21:48,404
vì vậy mô-đun đường dẫn hỗ trợ phương pháp giải quyết này, vì vậy

254
00:21:52,013 --> 00:21:57,331
điều này sẽ Dịch này vào tập tin thư mục đường dẫn đầy đủ,

255
00:21:57,331 --> 00:22:01,096
tập tin mà chúng tôi vừa xây dựng,

256
00:22:01,096 --> 00:22:05,620
FileURL mà chúng tôi vừa xây dựng.

257
00:22:05,620 --> 00:22:10,480
Vì vậy, điều này sẽ cung cấp cho chúng tôi đường dẫn đầy đủ cho các tập tin, và

258
00:22:10,480 --> 00:22:17,000
sau đó chúng tôi sẽ nói liên tục FileExtension.

259
00:22:17,000 --> 00:22:21,524
Vì vậy, nếu bạn muốn đảm bảo rằng

260
00:22:21,524 --> 00:22:26,808
phần mở rộng tên tệp là HTML.

261
00:22:30,003 --> 00:22:32,904
Vì vậy, từ FilePath,

262
00:22:32,904 --> 00:22:38,402
chúng tôi sẽ kiểm tra phần mở rộng tên tập tin và

263
00:22:38,402 --> 00:22:42,710
sau đó chúng tôi sẽ nói nếu FileExt ==.

264
00:22:42,710 --> 00:22:47,270
Vì vậy, nếu nó là một tập tin HTML, sau đó chúng ta biết làm thế nào để phục vụ nó từ

265
00:22:48,410 --> 00:22:51,830
mối quan hệ đặc biệt này của máy chủ HTTP nút.

266
00:22:51,830 --> 00:22:57,025
Vì vậy, chúng tôi sẽ nói nếu phần mở rộng tập tin là HTML, sau đó chúng tôi biết rằng

267
00:22:57,025 --> 00:23:02,835
các tập tin là một tập tin HTML và chúng tôi có hai tập tin, chỉ mục và aboutus.html.

268
00:23:02,835 --> 00:23:06,986
Vì vậy, chúng tôi sẽ kiểm tra xem nếu tập tin này tồn tại, vì vậy

269
00:23:06,986 --> 00:23:11,435
chúng tôi sẽ nói nếu tập tin tồn tại, FilePath.

270
00:23:11,435 --> 00:23:17,915
Vì vậy, phương thức tồn tại sẽ kiểm tra xem nếu tập tin tồn tại,

271
00:23:17,915 --> 00:23:24,180
vì vậy chúng ta sẽ nói fs.exists (FilePath),

272
00:23:24,180 --> 00:23:26,860
và điều này sẽ mất

273
00:23:29,780 --> 00:23:34,170
như một tham số thứ hai, một chức năng gọi lại.

274
00:23:34,170 --> 00:23:39,180
Vì vậy, chú ý việc sử dụng các chức năng gọi lại đầu tiên trong ví dụ của chúng tôi.

275
00:23:39,180 --> 00:23:46,430
Vì vậy, hàm callback này sẽ được gọi với tham số này tồn tại trong đó.

276
00:23:46,430 --> 00:23:50,740
Vì vậy, bên trong tham số callback này, điều này tồn tại sẽ là true hoặc false.

277
00:23:50,740 --> 00:23:54,160
Vì vậy, đây là tham số trả về cho hàm callback này.

278
00:23:54,160 --> 00:23:58,336
Vì vậy, trong đây, Chúng tôi sẽ kiểm tra, và

279
00:23:58,336 --> 00:24:02,584
chúng tôi sẽ nói nếu (! tồn tại), do

280
00:24:02,584 --> 00:24:08,248
đó có nghĩa là các tập tin không tồn tại,

281
00:24:08,248 --> 00:24:14,241
sau đó chúng ta sẽ nói res.StatusCode = 404.

282
00:24:14,241 --> 00:24:19,107
Nhớ lại rằng nếu tập tin không tồn tại, bạn sẽ gửi một mã trạng thái 404 nói rằng,

283
00:24:19,107 --> 00:24:20,608
bạn không thể tìm thấy tập tin.

284
00:24:20,608 --> 00:24:26,393
Và sau đó chúng tôi sẽ nói res.Setheader,

285
00:24:26,393 --> 00:24:33,996
và chúng tôi sẽ thiết lập tiêu đề để 'Content-Type',

286
00:24:37,305 --> 00:24:39,587
'text/html'.

287
00:24:42,729 --> 00:24:51,940
Và sau đó chúng ta cần phải gửi, tập tin HTML ở đây, hoặc mã HTML.

288
00:24:51,940 --> 00:24:59,150
Vì vậy, tôi sẽ làm các mã HTML cơ bản, html cơ thể h1.

289
00:25:01,582 --> 00:25:05,590
Lỗi 404,

290
00:25:05,590 --> 00:25:12,378
chúng ta sẽ nói, + FileURL +

291
00:25:17,421 --> 00:25:20,668
'không tìm thấy'.

292
00:25:24,185 --> 00:25:31,670
Và đóng cửa, Các trang HTML.

293
00:25:31,670 --> 00:25:36,560
Vì vậy, trong đây, như bạn nhận thấy, bạn đang sử dụng chức năng tồn tại

294
00:25:36,560 --> 00:25:41,350
của mô-đun hệ thống tập tin để kiểm tra xem tập tin có tồn tại hay không.

295
00:25:41,350 --> 00:25:43,670
Vì vậy, bạn cung cấp cho đường dẫn tập tin như là tham số đầu tiên, và

296
00:25:43,670 --> 00:25:45,970
thứ hai là hàm callback.

297
00:25:45,970 --> 00:25:51,380
Bên trong chức năng gọi lại này, nếu nó nói tồn tại là sai, sau đó bạn sẽ

298
00:25:51,380 --> 00:25:58,010
gửi lại thông báo lỗi 404 tiêu chuẩn, nói rằng bạn không thể tìm thấy các tập tin.

299
00:25:58,010 --> 00:26:01,420
Và sau khi chúng tôi làm điều này, chúng tôi sẽ chỉ đơn giản

300
00:26:04,918 --> 00:26:08,088
, trở lại, nếu không,

301
00:26:10,507 --> 00:26:16,151
Chúng tôi sẽ nói res.StatusCode

302
00:26:16,151 --> 00:26:22,267
= 200, res.SeTheader,

303
00:26:26,156 --> 00:26:32,481
('Content-Type', 'text/html').

304
00:26:37,154 --> 00:26:41,950
Bây giờ, chúng ta cần phải đọc trong tập tin và sau đó gửi tập tin ra.

305
00:26:41,950 --> 00:26:44,950
Vì vậy, đây là nơi, từ mô-đun hệ thống tập tin,

306
00:26:44,950 --> 00:26:50,510
chúng tôi sẽ sử dụng CreateReadStream,

307
00:26:50,510 --> 00:26:54,770
mà sẽ lấy FilePath làm tham số.

308
00:26:54,770 --> 00:27:00,810
Vì vậy, phương pháp CreateReadStream này sẽ đọc trong tập tin từ FilePath này.

309
00:27:00,810 --> 00:27:05,930
Và sau đó chuyển đổi nó thành dòng byte,

310
00:27:05,930 --> 00:27:10,530
và sau đó họ sẽ dẫn nó thông qua các phản ứng.

311
00:27:10,530 --> 00:27:15,300
Vì vậy, điều đó sẽ được đưa vào phản ứng, trong cơ thể của phản ứng.

312
00:27:15,300 --> 00:27:17,978
Vì vậy, theo cách đó chúng tôi vừa lấy tập tin và

313
00:27:17,978 --> 00:27:22,274
sau đó xây dựng nó vào phản ứng ở đây.

314
00:27:22,274 --> 00:27:26,640
Và đó là nó, hồ sơ đã sẵn sàng để được gửi đi, okay?

315
00:27:26,640 --> 00:27:29,875
Vì vậy, đây là nếu phần mở rộng tập tin là html,

316
00:27:29,875 --> 00:27:34,740
chúng tôi đang kiểm tra để đảm bảo rằng bạn xử lý điều này một cách chính xác.

317
00:27:34,740 --> 00:27:38,770
Vì vậy, đây là nơi bạn sẽ đọc trong tập tin và sau đó gửi nó ra.

318
00:27:38,770 --> 00:27:46,560
Nếu phần mở rộng tập tin không phải là html, thì tất nhiên, chúng ta cần phải gửi một thông báo lỗi.

319
00:27:46,560 --> 00:27:51,481
Vì vậy, ngay tại đó chúng ta sẽ thấy, chúng ta sẽ sao chép

320
00:27:51,481 --> 00:27:56,890
đặc biệt này, Mã từ đây.

321
00:27:58,774 --> 00:28:03,364
Và sau đó dán nó vào đó.

322
00:28:03,364 --> 00:28:10,553
Chúng tôi sẽ nói, khác StatusCode = 404, văn bản ngữ cảnh/html,

323
00:28:10,553 --> 00:28:16,685
và thông báo lỗi nói, Lỗi 404, FileURL.

324
00:28:16,685 --> 00:28:20,849
Nó không được tìm thấy, nhưng

325
00:28:20,849 --> 00:28:25,250
nó không phải là một tập tin HTML.

326
00:28:25,250 --> 00:28:28,648
Vì vậy, đó là lỗi mà chúng tôi sẽ gửi lại trong trường hợp này.

327
00:28:28,648 --> 00:28:34,384
Và cuối cùng, đối với trường hợp khác cuối cùng,

328
00:28:34,384 --> 00:28:39,650
vì vậy ở đây chúng tôi đang nói phương pháp.

329
00:28:39,650 --> 00:28:44,910
Vì vậy, điều này khác tương ứng với phương pháp yêu cầu.

330
00:28:44,910 --> 00:28:48,230
Vì vậy, nếu phương pháp yêu cầu không phải là GET, nhưng một số phương pháp yêu cầu khác,

331
00:28:48,230 --> 00:28:54,380
sau đó chúng tôi sẽ không xử lý điều đó trong phiên bản này ứng dụng Node của chúng tôi.

332
00:28:54,380 --> 00:28:58,333
Vì vậy, chúng tôi sẽ gửi lại StatusCode 404,

333
00:28:58,333 --> 00:29:02,759
Nội dung html, và chúng tôi sẽ nói Lỗi 404.

334
00:29:04,100 --> 00:29:09,117
Và chúng ta sẽ nói, phương pháp req,

335
00:29:11,763 --> 00:29:16,394
không, được hỗ trợ,

336
00:29:16,394 --> 00:29:21,800
không được hỗ trợ bởi máy chủ HTML Node này ở đây, đó là nó.

337
00:29:21,800 --> 00:29:28,667
Với những thay đổi này, chúng tôi đã sẵn sàng để khởi động lại trình duyệt của chúng tôi.

338
00:29:28,667 --> 00:29:33,850
Và sau đó để cho nó phục vụ lên các tập tin HTML ở đây.

339
00:29:35,800 --> 00:29:42,351
Vì vậy, chúng ta hãy lưu các thay đổi, Và sau đó đi và khởi động lại máy chủ của chúng tôi, và

340
00:29:42,351 --> 00:29:48,018
sau đó kiểm tra những gì nó gửi khi chúng tôi gửi yêu cầu khác nhau đến máy chủ.

341
00:29:48,018 --> 00:29:51,974
Đi đến thiết bị đầu cuối, nếu máy chủ của bạn đang chạy, hãy

342
00:29:51,974 --> 00:29:56,398
dừng nó bằng cách gõ Ctrl+C, và sau đó khởi động lại máy chủ.

343
00:29:56,398 --> 00:30:00,490
Và khi máy chủ đang hoạt động và chạy, chúng ta hãy gửi một số yêu cầu đến nó.

344
00:30:00,490 --> 00:30:05,722
Đầu tiên, từ một trình duyệt, và sau đó từ Postman.

345
00:30:05,722 --> 00:30:10,340
Đi vào cửa sổ trình duyệt của bạn, hãy gõ localhost:3000, và

346
00:30:10,340 --> 00:30:16,320
thấy rằng điều này trả về tệp index.html như chúng ta mong đợi.

347
00:30:16,320 --> 00:30:21,073
Và sau đó chúng ta sẽ nói localhost:3000/index.html,

348
00:30:21,073 --> 00:30:24,974
và điều này cũng sẽ trả lại tệp index.html.

349
00:30:24,974 --> 00:30:32,530
Bây giờ nếu chúng ta gửi aboutus.html, nó nói Aboutus.html, và nó trả về nó một cách chính xác.

350
00:30:32,530 --> 00:30:38,390
Bây giờ hãy gửi một yêu cầu cho aboutus.txt, và xem những gì nó làm.

351
00:30:38,390 --> 00:30:43,365
Vì vậy, nó nói /aboutus.txt không phải là một tập tin HTML.

352
00:30:43,365 --> 00:30:49,992
Sau đó, chúng ta hãy gửi một yêu cầu đến test.html.

353
00:30:49,992 --> 00:30:56,005
Và chúng tôi biết rằng test.html không tồn tại, vì vậy nó nói /test.html không tìm thấy.

354
00:30:56,005 --> 00:31:01,185
Vì vậy, chúng ta thấy rằng bằng cách sử dụng trình duyệt, chúng ta có thể lấy

355
00:31:01,185 --> 00:31:06,620
những tập tin tồn tại, và máy chủ có thể gửi các tập tin đến trình duyệt.

356
00:31:06,620 --> 00:31:10,420
Bây giờ chúng ta hãy đi đến Postman và cố gắng tạo ra các yêu cầu tương tự,

357
00:31:10,420 --> 00:31:13,400
và xem phản hồi từ máy chủ.

358
00:31:13,400 --> 00:31:20,280
Tiếp theo, đi đến Postman, chúng ta hãy gửi một yêu cầu GET đến localhost:3000/.

359
00:31:20,280 --> 00:31:25,150
Và bạn thấy rằng điều này trả về tập tin index.html.

360
00:31:25,150 --> 00:31:30,530
Hãy gửi một yêu cầu đến aboutus.html.

361
00:31:30,530 --> 00:31:35,159
Và sau đó bạn thấy rằng nó trả về tập tin aboutus.html.

362
00:31:35,159 --> 00:31:38,650
Và sau đó chúng tôi sẽ gửi một yêu cầu đến các tập tin văn bản,

363
00:31:38,650 --> 00:31:42,240
và sau đó nó nói lỗi 404, không phải một tập tin HTML.

364
00:31:42,240 --> 00:31:46,920
Và bạn sẽ thấy rằng tình trạng ở đây nói, 404 không tìm thấy.

365
00:31:46,920 --> 00:31:51,400
Và sau đó chúng tôi sẽ, thay vì gửi một yêu cầu GET,

366
00:31:51,400 --> 00:31:56,730
xem đây là lợi thế của việc sử dụng Postman, tôi sẽ gửi một yêu cầu PUT.

367
00:31:56,730 --> 00:32:01,040
Và bạn sẽ nhận thấy rằng điều này nói, Lỗi: PUT không được hỗ trợ, và

368
00:32:01,040 --> 00:32:04,800
như vậy với trạng thái 404 ở đây, v.v.

369
00:32:04,800 --> 00:32:11,010
Vì vậy, đây là cách bạn có thể cấu hình một máy chủ HTTP Node

370
00:32:11,010 --> 00:32:16,600
để có thể phục vụ lên các tập tin, các tập tin HTTP trong trường hợp cụ thể này.

371
00:32:16,600 --> 00:32:19,420
Bây giờ bạn có thể dễ dàng tưởng tượng mở rộng

372
00:32:19,420 --> 00:32:23,900
máy chủ HTTP này để xử lý nhiều loại khác nhau của các tập tin và như vậy.

373
00:32:23,900 --> 00:32:25,630
Nhưng tất nhiên, tương ứng,

374
00:32:25,630 --> 00:32:30,350
mã cũng sẽ trở nên phức tạp hơn những gì chúng ta có tại thời điểm này.

375
00:32:30,350 --> 00:32:33,140
Với điều này, chúng tôi hoàn thành bài tập này.

376
00:32:33,140 --> 00:32:38,589
Trong bài tập này, chúng ta đã thấy làm thế nào chúng ta có thể thiết lập một

377
00:32:38,589 --> 00:32:45,356
máy chủ HTTP dựa trên Node đơn giản phục vụ lên các tập tin từ trang web máy chủ của chúng tôi.

378
00:32:45,356 --> 00:32:48,260
[ NHẠC]