1
00:00:03,930 --> 00:00:06,395
Trong bài giảng trước đó,

2
00:00:06,395 --> 00:00:14,130
chúng tôi đã tìm hiểu về các yếu tố cần thiết của mạng bao gồm các chi tiết của giao thức HTTP.

3
00:00:14,130 --> 00:00:20,805
Bây giờ, chúng ta sẽ xem xét cách Node có thể được sử dụng để xây dựng một máy chủ HTTP.

4
00:00:20,805 --> 00:00:28,420
Đây là nơi mà mô-đun HTTP lõi được tích hợp vào Node đến với sự trợ giúp của chúng tôi.

5
00:00:28,420 --> 00:00:33,820
Ngoài ra, chúng ta sẽ xem xét một vài module Node cốt lõi khác hữu ích cho việc

6
00:00:33,820 --> 00:00:40,390
xây dựng một máy chủ HTTP từ việc sử dụng Node.

7
00:00:40,390 --> 00:00:42,730
Vì vậy, làm thế nào để chúng ta sử dụng các mô-đun HTTP Node?

8
00:00:42,730 --> 00:00:50,045
Như tôi đã đề cập, mô-đun HTTP là một trong những mô-đun cốt lõi được tích hợp vào Node.

9
00:00:50,045 --> 00:00:53,275
Vì vậy, đây là một mô-đun mạng cốt lõi hỗ trợ

10
00:00:53,275 --> 00:00:58,475
một nền tảng hiệu suất cao cho HTTP stack.

11
00:00:58,475 --> 00:01:02,440
Vì vậy, việc sử dụng mô-đun trong ứng dụng Node của chúng

12
00:01:02,440 --> 00:01:06,430
tôi đòi hỏi chúng tôi phải nhập mô-đun vào ứng dụng của chúng tôi.

13
00:01:06,430 --> 00:01:12,190
Vì vậy, đây là những gì chúng ta làm bằng cách nói const HTTP = yêu cầu và,

14
00:01:12,190 --> 00:01:15,120
tên của HTTP module có.

15
00:01:15,120 --> 00:01:17,260
Bây giờ, một khi mô-đun được nhập khẩu,

16
00:01:17,260 --> 00:01:24,330
sau đó mô-đun HTTP này hỗ trợ một chức năng CreateServer mà mất,

17
00:01:24,330 --> 00:01:29,500
như một tham số, một chức năng hoạt động như

18
00:01:29,500 --> 00:01:32,890
một hàm callback cho mô-đun CreateServer và

19
00:01:32,890 --> 00:01:37,240
chức năng này có hai tham số: request và response.

20
00:01:37,240 --> 00:01:40,120
Yêu cầu là thông điệp yêu cầu đến từ

21
00:01:40,120 --> 00:01:44,380
phía khách hàng và chúng ta có thể phân tích thông điệp yêu cầu và sau đó trích xuất

22
00:01:44,380 --> 00:01:48,010
rất nhiều thông tin từ thông điệp yêu cầu và sử dụng nó để

23
00:01:48,010 --> 00:01:51,850
đưa ra quyết định về cách chúng ta xây dựng thông điệp phản hồi tương ứng với thông điệp đó.

24
00:01:51,850 --> 00:01:56,665
Thông điệp phản hồi được xây dựng bằng cách sử dụng tham số thứ hai ở đây, res,

25
00:01:56,665 --> 00:02:01,855
trên đó chúng ta có thể xây dựng các giá trị tiêu đề khác nhau cho

26
00:02:01,855 --> 00:02:08,830
thông điệp phản hồi HTTP của chúng tôi và cũng là cơ thể của thông điệp phản hồi HTTP.

27
00:02:08,830 --> 00:02:10,120
Bây giờ, để khởi động máy chủ,

28
00:02:10,120 --> 00:02:11,725
một khi bạn tạo máy chủ,

29
00:02:11,725 --> 00:02:16,030
sau đó bạn sẽ nói server.listen và sau đó cung cấp số cổng

30
00:02:16,030 --> 00:02:20,420
và tên máy chủ cho máy chủ và điều đó sẽ khởi động máy chủ của chúng tôi.

31
00:02:20,420 --> 00:02:27,520
Chúng ta sẽ xem xét một số chi tiết trong bài tập ví dụ sau bài giảng này.

32
00:02:27,520 --> 00:02:32,770
Như tôi đã đề cập, thông tin thư thoại yêu cầu đến có sẵn

33
00:02:32,770 --> 00:02:38,130
thông qua tham số req chức năng mất trong phương pháp CreateServer.

34
00:02:38,130 --> 00:02:40,480
Vì vậy, req hoặc request,

35
00:02:40,480 --> 00:02:42,460
nếu bạn muốn cung cấp cho nó tên đầy đủ,

36
00:02:42,460 --> 00:02:46,120
bạn có thể gọi nó như là một yêu cầu nhưng nói chung chúng tôi đã tìm thấy rằng trong

37
00:02:46,120 --> 00:02:50,425
ví dụ chúng tôi đã sử dụng req để đại diện cho thông điệp yêu cầu.

38
00:02:50,425 --> 00:02:57,462
Nó hỗ trợ trên các thuộc tính đối tượng Javascript như tiêu đề,

39
00:02:57,462 --> 00:03:02,225
nội dung và các thông tin khác nhau có thể được trích xuất,

40
00:03:02,225 --> 00:03:09,350
URL và phương thức đã được yêu cầu bởi trang web khách hàng đó.

41
00:03:09,350 --> 00:03:13,240
Và,

42
00:03:18,424 --> 00:03:23,570
để đáp lại, bạn xây dựng phản hồi bằng cách sử dụng đối tượng Javascript phản hồi hỗ trợ chức năng SeTheader đó, chức năng StatusCode có thể được đặt thành mã trạng thái của thông điệp phản hồi.

43
00:03:23,570 --> 00:03:26,235
Và sau đó bạn sẽ viết tin nhắn nói

44
00:03:26,235 --> 00:03:29,440
res.write và bạn sẽ kết thúc tin nhắn bằng cách nói

45
00:03:29,440 --> 00:03:35,785
res.end và đó sẽ mất phần cuối cùng của cơ thể cho tin nhắn.

46
00:03:35,785 --> 00:03:40,225
Nội dung có thể là văn bản tiêu chuẩn hoặc HTML hoặc

47
00:03:40,225 --> 00:03:47,369
bất kỳ thông tin nào khác mà bạn muốn kèm theo bên trong nội dung của thư trả lời đó.

48
00:03:47,369 --> 00:03:49,780
Nhưng một khi res.end được gọi,

49
00:03:49,780 --> 00:03:54,460
trả lời được gửi lại cho khách hàng từ máy chủ HTTP.

50
00:03:54,460 --> 00:03:59,185
Hai module lõi khác có ích cho chúng ta

51
00:03:59,185 --> 00:04:04,295
khi chúng ta đang xây dựng máy chủ Node HTTP là module đường dẫn Node.

52
00:04:04,295 --> 00:04:09,145
Mô-đun đường dẫn cho phép chúng tôi xác định đường dẫn đến một tập tin và sau đó

53
00:04:09,145 --> 00:04:14,375
kiểm tra xem các tập tin tồn tại hoặc kiểm tra thêm chi tiết về một tập tin.

54
00:04:14,375 --> 00:04:17,620
Ví dụ: phần mở rộng của tệp,

55
00:04:17,620 --> 00:04:19,185
tên và vân vân.

56
00:04:19,185 --> 00:04:22,000
Vì vậy, mô-đun đường dẫn có thể được sử dụng trong

57
00:04:22,000 --> 00:04:26,360
ứng dụng của chúng tôi bằng cách yêu cầu mô-đun đường dẫn như được hiển thị ở đây.

58
00:04:26,360 --> 00:04:28,360
Và sau đó, điều này hỗ trợ các phương pháp

59
00:04:28,360 --> 00:04:29,990
, ví dụ như path.resolve,

60
00:04:29,990 --> 00:04:33,940
mà sẽ chuyển đổi một đường dẫn tương đối thành

61
00:04:33,940 --> 00:04:38,620
một đường dẫn tuyệt đối mà toàn bộ đường dẫn đến tập tin.

62
00:04:38,620 --> 00:04:43,930
Bạn cũng có thể kiểm tra tên phần mở rộng cho tệp bằng cách gọi

63
00:04:43,930 --> 00:04:47,830
hàm path.extname và cung cấp đường dẫn tệp sẽ

64
00:04:47,830 --> 00:04:52,640
kiểm tra phần mở rộng của tên tệp.

65
00:04:52,640 --> 00:04:55,870
Tương tự, mô-đun hệ thống tập tin,

66
00:04:55,870 --> 00:04:57,970
một lần nữa là một mô-đun lõi trong Node,

67
00:04:57,970 --> 00:05:00,670
sẽ cho phép chúng ta đọc và ghi các

68
00:05:00,670 --> 00:05:04,805
tập tin tồn tại trong hệ thống tập tin cục bộ trên máy tính.

69
00:05:04,805 --> 00:05:08,725
Vì vậy, các mô-đun hệ thống tập tin có thể được sử dụng trong

70
00:05:08,725 --> 00:05:13,480
ứng dụng Node của chúng tôi bằng cách yêu cầu nó như được hiển thị ở đây.

71
00:05:13,480 --> 00:05:16,765
Và sau đó, các mô-đun hệ thống tập tin hỗ trợ nhiều phương pháp

72
00:05:16,765 --> 00:05:21,460
bao gồm một phương pháp để kiểm tra xem tập tin có tồn tại trong hệ thống tập tin cục bộ hay không.

73
00:05:21,460 --> 00:05:24,190
Vì vậy, fs.exists sẽ lấy

74
00:05:24,190 --> 00:05:28,165
FilePath làm tham số đầu tiên và tham số thứ hai là

75
00:05:28,165 --> 00:05:35,530
một hàm callback mà sẽ trở lại với một tham số mà chúng ta có thể đặt tên nó là tồn tại.

76
00:05:35,530 --> 00:05:38,410
Tham số này, tồn tại, sẽ là đúng nếu tập tin

77
00:05:38,410 --> 00:05:43,595
tồn tại và sẽ là sai nếu tập tin không tồn tại trong hệ thống tập tin cục bộ.

78
00:05:43,595 --> 00:05:50,390
Tương tự như vậy, bạn có thể đọc từ tập tin bằng cách tạo ra một luồng đọc cho đường dẫn tập tin.

79
00:05:50,390 --> 00:05:53,585
Vì vậy, bạn có thể nói Fs.CreateReadStream và

80
00:05:53,585 --> 00:05:58,240
FilePath và điều này có thể được truyền vào thông báo phản hồi.

81
00:05:58,240 --> 00:06:01,175
Vì vậy, tập tin sẽ được đọc trong từ tập tin được

82
00:06:01,175 --> 00:06:05,290
đưa ra bởi FilePath và sau đó các nội dung sẽ được đưa

83
00:06:05,290 --> 00:06:13,220
vào nội dung của thông điệp phản hồi bằng cách gọi một chuỗi chức năng như được hiển thị ở đây.

84
00:06:13,220 --> 00:06:17,920
Vì vậy, đây là một số ví dụ về một số module Node cốt lõi sẽ rất

85
00:06:17,920 --> 00:06:23,710
hữu ích khi chúng ta đang xây dựng một máy chủ HTTP sử dụng Node.

86
00:06:23,710 --> 00:06:29,223
Bây giờ, chúng ta hiểu một số chi tiết về máy chủ HTTP và làm thế nào nó có thể được xây dựng, chúng ta

87
00:06:29,223 --> 00:06:30,690
hãy đi đến bài tập,

88
00:06:30,690 --> 00:06:36,880
nơi chúng ta sẽ xây dựng một máy chủ HTTP đơn giản mà đầu tiên sẽ phục vụ lên một

89
00:06:36,880 --> 00:06:41,950
số thông tin cơ bản và sau đó chúng tôi sẽ phục vụ lên các tập tin

90
00:06:41,950 --> 00:06:48,170
tồn tại trong một thư mục công cộng trong dự án của chúng tôi.