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

2
00:00:04,528 --> 00:00:09,392
Bây giờ chúng ta đã hiểu REST API và thể hiện hỗ trợ cho

3
00:00:09,392 --> 00:00:13,293
REST API, chúng ta hãy chuyển sang bài tập tiếp theo.

4
00:00:13,293 --> 00:00:17,168
Nơi chúng ta sẽ xem xét cách chúng ta sẽ phát triển API REST

5
00:00:17,168 --> 00:00:19,972
bằng cách sử dụng sự hỗ trợ được đưa ra bởi express.

6
00:00:19,972 --> 00:00:23,110
Và cũng có thể, việc sử dụng bộ định tuyến nhanh,

7
00:00:23,110 --> 00:00:28,110
cho phép chúng tôi tổ chức mã của chúng tôi theo cách phù hợp hơn

8
00:00:28,110 --> 00:00:33,231
khi bạn cần hỗ trợ một số lượng lớn các điểm cuối REST API.

9
00:00:35,080 --> 00:00:39,965
Để bắt đầu, tiếp tục với thư mục node-express

10
00:00:39,965 --> 00:00:44,565
chúng tôi đã làm việc trên máy chủ web dựa trên biểu thức.

11
00:00:44,565 --> 00:00:50,546
Tại dấu nhắc, hãy cài đặt bộ phân tích cơ thể,

12
00:00:50,546 --> 00:00:57,729
do đó, để làm điều đó, gõ npm cài đặt bộ phân tích cơ thể —save.

13
00:00:57,729 --> 00:01:02,674
Và chúng tôi đang sử dụng phiên bản 1.18.3 của bộ

14
00:01:02,674 --> 00:01:06,689
phân tích cơ thể trong khóa học này ở đây.

15
00:01:06,689 --> 00:01:12,151
Bây giờ một khi chúng tôi đã cài đặt cơ thể phân tích cú pháp, sau đó đi vào mã của chúng tôi.

16
00:01:12,151 --> 00:01:16,476
Trong index.js5,

17
00:01:16,476 --> 00:01:22,723
hãy để tôi yêu cầu BodyParser, vì vậy

18
00:01:22,723 --> 00:01:28,492
chúng tôi sẽ nói const BodyParser

19
00:01:28,492 --> 00:01:33,553
yêu cầu cơ thể-phân tích cú pháp.

20
00:01:33,553 --> 00:01:39,891
Và sau đó bất cứ khi nào bạn cần sử dụng một middleware,

21
00:01:39,891 --> 00:01:46,558
bạn sẽ nói, app.use (BodyParser.json).

22
00:01:46,558 --> 00:01:51,782
Vì vậy, điều này cho phép chúng ta phân tích nội dung của thông điệp yêu cầu,

23
00:01:51,782 --> 00:01:54,989
được định dạng ở định dạng JSON.

24
00:01:57,466 --> 00:02:03,374
Một khi chúng tôi đã hoàn thành điều đó, sau đó chúng ta hãy bắt đầu xây

25
00:02:03,374 --> 00:02:08,678
dựng hỗ trợ API REST cho điểm cuối /dishes.

26
00:02:08,678 --> 00:02:12,797
Sử dụng các

27
00:02:12,797 --> 00:02:16,339
phương thức app.all, app.get, put, post, và delete được hỗ trợ bởi express.

28
00:02:16,339 --> 00:02:21,692
Để làm điều đó, hãy để tôi bắt đầu bằng cách nói

29
00:02:21,692 --> 00:02:26,725
app.all, và các tham số đầu tiên

30
00:02:26,725 --> 00:02:31,937
mà app.all lấy là điểm cuối.

31
00:02:31,937 --> 00:02:36,360
Vì vậy, trong trường hợp này, tôi chỉ định điểm cuối của /dish.

32
00:02:36,360 --> 00:02:43,560
Và sau đó tham số thứ hai là hàm callback,

33
00:02:43,560 --> 00:02:49,564
req, res, tiếp theo, ba tham số ở đây.

34
00:02:49,564 --> 00:02:56,518
Và bên trong chức năng gọi lại này, chúng tôi sẽ xử lý các yêu cầu đến.

35
00:02:56,518 --> 00:03:01,740
Vì vậy, chúng tôi sẽ nói, khi một yêu cầu đến, cho tất cả các yêu cầu.

36
00:03:01,740 --> 00:03:06,993
Vì vậy, khi chúng ta nói app.all, không có vấn đề mà phương pháp được gọi,

37
00:03:06,993 --> 00:03:12,864
get, put, post, hoặc delete, cho /dishes REST API điểm cuối,

38
00:03:12,864 --> 00:03:17,190
mã này sẽ được thực hiện đầu tiên theo mặc định ở đây.

39
00:03:17,190 --> 00:03:26,376
Vì vậy, chúng tôi sẽ nói res StatusCode là 200 và

40
00:03:26,376 --> 00:03:31,889
sau đó res.SeTheader và

41
00:03:31,889 --> 00:03:39,248
chúng ta hãy nói Content-Type văn bản.

42
00:03:39,248 --> 00:03:44,290
Chúng tôi sẽ gửi văn bản thuần túy ngay bây giờ, thay vì văn bản HTML.

43
00:03:44,290 --> 00:03:47,575
Điều này sẽ đủ cho các điểm cuối REST API.

44
00:03:47,575 --> 00:03:52,420
Sau đó, chúng tôi sẽ gửi dữ liệu dưới dạng JSON một khi chúng tôi

45
00:03:52,420 --> 00:03:54,640
có thể truy xuất dữ liệu từ cơ sở dữ liệu.

46
00:03:54,640 --> 00:03:57,340
Vì vậy, điều đó sẽ đến trong một trong những bài tập sau này.

47
00:03:57,340 --> 00:04:04,389
Trong thời điểm này, chúng tôi sẽ chỉ đơn giản là gửi trả lời rõ ràng trở lại cho khách hàng.

48
00:04:04,389 --> 00:04:10,785
Bây giờ sau hai, phần mềm trung gian ở đây chưa hoàn thành.

49
00:04:10,785 --> 00:04:17,590
Vì vậy, chúng tôi sẽ gọi chức năng tiếp theo ở đây, vì vậy tiếp theo như bạn thấy đề cập đến điều này tiếp theo.

50
00:04:17,590 --> 00:04:24,954
Vì vậy, khi bạn gọi tiếp theo, những gì nó có nghĩa là nó sẽ tiếp tục tìm kiếm

51
00:04:24,954 --> 00:04:29,665
thông số kỹ thuật bổ sung xuống dưới đây,

52
00:04:29,665 --> 00:04:33,790
mà sẽ phù hợp với món ăn này điểm cuối.

53
00:04:33,790 --> 00:04:38,282
Vì vậy, điều này sẽ được thực hiện cho tất cả các yêu cầu, nhận được, đặt, đăng

54
00:04:38,282 --> 00:04:42,712
, và xóa, trên các món ăn, và nó sẽ tiếp tục đến một kế tiếp.

55
00:04:42,712 --> 00:04:48,436
Vì vậy, ở đây, giả sử chúng tôi nhận được một yêu cầu get

56
00:04:48,436 --> 00:04:53,792
trên các món ăn, có nghĩa là bây giờ,

57
00:04:53,792 --> 00:04:58,961
nếu chúng ta nhận được một yêu cầu get trên các món ăn

58
00:04:58,961 --> 00:05:04,133
, đầu tiên này sẽ được thực hiện, và

59
00:05:04,133 --> 00:05:09,304
sau đó req và res sẽ được chuyển

60
00:05:09,304 --> 00:05:13,760
sang cuộc gọi thứ hai này ở đây.

61
00:05:13,760 --> 00:05:17,481
Vì vậy, trong trường hợp này, tôi sẽ không còn cần tiếp theo nữa,

62
00:05:17,481 --> 00:05:21,335
bởi vì tôi sẽ không gọi thêm nữa.

63
00:05:21,335 --> 00:05:26,444
Tôi sẽ hoàn thành việc xử lý ngay trong phương pháp này ở đây chính nó.

64
00:05:26,444 --> 00:05:31,337
Vì vậy, nếu chúng ta sửa đổi req hoặc res bên trong mã này,

65
00:05:31,337 --> 00:05:36,607
sau đó khi bạn gọi tiếp theo, rằng đối tượng sửa đổi

66
00:05:36,607 --> 00:05:41,130
sẽ được thông qua như là tham số này.

67
00:05:41,130 --> 00:05:45,698
Vì vậy, nếu bạn đã ban hành một yêu cầu get trên các món ăn, vì vậy đây là những gì sẽ được

68
00:05:45,698 --> 00:05:50,202
thực hiện ngay sau này, vì vậy điều này tiếp theo sẽ làm cho nó để vượt qua trên.

69
00:05:50,202 --> 00:05:55,836
Và sau đó ở đây, bạn nhận thấy rằng chúng tôi đã sửa đổi đối tượng res ở đây.

70
00:05:55,836 --> 00:06:02,770
Và sửa đổi sẽ mang theo như tham số đầu vào cho chức năng này ở đây.

71
00:06:03,940 --> 00:06:09,380
Vì vậy, bên trong chức năng này get, chúng ta có thể nói, ví dụ, tại thời điểm này,

72
00:06:09,380 --> 00:06:15,197
tôi chỉ đơn giản là sẽ gửi lại một thông điệp đơn giản, chúng tôi sẽ nói,

73
00:06:15,197 --> 00:06:20,170
sẽ gửi tất cả các món ăn cho bạn.

74
00:06:20,170 --> 00:06:25,650
Sau đó, khi chúng ta lấy thông tin món ăn từ cơ sở dữ liệu

75
00:06:25,650 --> 00:06:31,036
sau khi chúng ta tìm hiểu về MongoDB, sau đó chức năng này sẽ được trả

76
00:06:31,036 --> 00:06:36,534
lại dữ liệu JSON đó trở lại cho khách hàng, vì nó là trong một yêu cầu get ở đây.

77
00:06:36,534 --> 00:06:40,566
Bây giờ trong khóa học trước đó, chúng tôi đã sử dụng máy chủ JSON, và

78
00:06:40,566 --> 00:06:44,457
máy chủ JSON đã cung cấp tất cả những điều này cho chúng tôi.

79
00:06:44,457 --> 00:06:46,965
Bây giờ bạn đang thấy cách bạn sẽ xây dựng

80
00:06:46,965 --> 00:06:50,268
một máy chủ thực sẽ xử lý yêu cầu đến.

81
00:06:50,268 --> 00:06:53,139
Và sau đó tạo ra một phản hồi thích hợp và

82
00:06:53,139 --> 00:06:57,857
gửi nó trở lại cho bạn để đáp ứng yêu cầu nhận được từ phía khách hàng.

83
00:06:57,857 --> 00:07:02,611
Và đây là nơi người dùng thể hiện, như chúng ta thấy ở đây, rất hữu ích.

84
00:07:02,611 --> 00:07:06,971
Vì vậy, chúng tôi đã xử lý get, chúng

85
00:07:06,971 --> 00:07:14,387
ta hãy xử lý bài cũng trên các món ăn ở đây.

86
00:07:16,120 --> 00:07:21,064
Và một lần nữa, các tham số sẽ là (req, res,

87
00:07:21,064 --> 00:07:26,722
tiếp theo), và chức năng đó được gọi sẽ ở đây.

88
00:07:26,722 --> 00:07:31,606
Bây giờ, khi nhận được yêu cầu, bởi vì ở đây, bạn đang gọi rest.end.

89
00:07:31,606 --> 00:07:36,982
Vì vậy, kết thúc đó là xử lý yêu cầu get và không kích hoạt trả

90
00:07:36,982 --> 00:07:42,130
lời được gửi trở lại, hoặc phản hồi được gửi lại cho khách hàng tại thời điểm này.

91
00:07:42,130 --> 00:07:47,050
Bây giờ, nếu bạn nhận được một yêu cầu đăng trên các món ăn, một lần nữa, toàn bộ mã này sẽ được thực hiện.

92
00:07:47,050 --> 00:07:52,859
Và sau đó, vì điều này tiếp theo, mà sẽ thả vào cuộc gọi chức năng này ở đây.

93
00:07:52,859 --> 00:07:57,000
Và sau đó mã ở đây, sẽ được thực hiện, vì vậy khi bạn nhận được một

94
00:07:59,610 --> 00:08:04,820
bài đăng Yêu cầu gửi đến từ máy chủ sẽ mang một số thông tin

95
00:08:04,820 --> 00:08:08,710
trong nội dung của tin nhắn dưới dạng dữ liệu JSON.

96
00:08:08,710 --> 00:08:13,650
Họ sẽ thấy những gì hình thức của dữ liệu JSON là khi chúng ta

97
00:08:13,650 --> 00:08:18,910
nhìn sau khi chúng ta kiểm tra điểm cuối bằng cách sử dụng bài net.

98
00:08:18,910 --> 00:08:24,700
Tôi sẽ cho bạn thấy nội dung của thông điệp yêu cầu đăng sẽ chứa.

99
00:08:24,700 --> 00:08:27,710
Nhưng tại thời điểm này, những gì tôi sẽ làm là,

100
00:08:27,710 --> 00:08:33,420
tôi sẽ trích xuất thông tin từ cơ thể.

101
00:08:33,420 --> 00:08:38,545
Và vì vậy ở đây khi chúng ta sử dụng bộ phân tích cú pháp cơ thể, những gì xảy ra là đối với

102
00:08:38,545 --> 00:08:44,541
yêu cầu đến, cơ thể của yêu cầu đến sẽ được phân tích cú pháp và

103
00:08:44,541 --> 00:08:48,237
sau đó thêm vào đối tượng req như req.body.

104
00:08:48,237 --> 00:08:52,843
Vì vậy, req.body sẽ cung cấp cho bạn quyền truy cập vào bất cứ điều gì bên trong nội

105
00:08:52,843 --> 00:08:54,050
dung của thông điệp.

106
00:08:54,050 --> 00:08:58,642
Vì vậy, khi tôi gửi yêu cầu,

107
00:08:58,642 --> 00:09:04,339
tôi sẽ thêm thông tin

108
00:09:04,339 --> 00:09:10,034
vào cơ thể yêu cầu dưới dạng một chuỗi JSON

109
00:09:10,034 --> 00:09:15,570
có chứa một tên và một mô tả.

110
00:09:15,570 --> 00:09:20,081
Vì vậy, tôi sẽ trích xuất hai mảnh thông tin này và

111
00:09:20,081 --> 00:09:26,080
sau đó in chúng ra và sau đó gửi chúng trở lại cho khách hàng trong tin nhắn trả lời.

112
00:09:26,080 --> 00:09:32,840
Vì vậy, tôi có thể nói, req.body.và sau đó tên.

113
00:09:32,840 --> 00:09:38,298
Và như vậy kỳ vọng là khi khách hàng gửi tin nhắn bài đăng,

114
00:09:38,298 --> 00:09:42,183
nội dung bài đăng sẽ chứa một chuỗi JSON

115
00:09:42,183 --> 00:09:47,108
, cũng sẽ chứa thuộc tính tên trong chuỗi JSON.

116
00:09:47,108 --> 00:09:52,646
Vì vậy, req.body.name cộng và

117
00:09:52,646 --> 00:09:57,952
đây là nơi tôi sẽ bao gồm

118
00:09:57,952 --> 00:10:06,970
với các chi tiết: + req.body.description.

119
00:10:06,970 --> 00:10:11,654
Vì vậy, bất cứ điều gì chuỗi JSON chứa trong req.body, nhưng

120
00:10:11,654 --> 00:10:15,963
chuỗi JSON sẽ được phân tích thành một đối tượng JavaScript và

121
00:10:15,963 --> 00:10:19,909
thêm vào đối tượng yêu cầu như là một cơ thể thuộc tính.

122
00:10:19,909 --> 00:10:22,971
Đối tượng JavaScript chỉ

123
00:10:22,971 --> 00:10:27,440
đến bất cứ điều gì đi vào như là chuỗi JSON trong nội dung của thông điệp yêu cầu.

124
00:10:27,440 --> 00:10:31,750
Vì vậy, đó là lý do tại sao tôi có thể phân tích tài sản tên, tài sản mô tả,,

125
00:10:31,750 --> 00:10:38,000
bạn có thể có tài sản giá, tài sản hình ảnh, và tất cả những điều đó.

126
00:10:38,000 --> 00:10:42,260
Vì vậy, nếu bạn đã thực hiện các khóa học trước đó, bạn đã nhìn thấy cấu trúc của một

127
00:10:42,260 --> 00:10:48,850
đối tượng món ăn, dưới dạng một chuỗi JSON hoặc đối tượng JavaScript ở đó.

128
00:10:48,850 --> 00:10:52,920
Vì vậy, tên và mô tả nghe có vẻ quen thuộc với bạn.

129
00:10:52,920 --> 00:10:55,400
Vì vậy, đó chính xác những gì tôi đang sử dụng ở đây.

130
00:10:55,400 --> 00:11:00,823
Ngay bây giờ tôi chỉ trích xuất tên và mô tả từ cơ thể và

131
00:11:00,823 --> 00:11:04,220
sau đó gửi nó trở lại cho khách hàng trong cơ thể này.

132
00:11:04,220 --> 00:11:09,460
Vì vậy, tôi chỉ xây dựng thông điệp trả lời này ở đây bằng cách sử dụng thông tin

133
00:11:09,460 --> 00:11:13,150
từ cơ thể của thông điệp yêu cầu, và sau đó gửi nó trở lại cho khách hàng.

134
00:11:13,150 --> 00:11:17,830
Vì vậy, theo cách đó tôi có thể xác nhận rằng máy chủ đang nhận được bất cứ điều gì tôi đang gửi

135
00:11:17,830 --> 00:11:19,930
trong nội dung của tin nhắn.

136
00:11:19,930 --> 00:11:21,820
Vì vậy, đây là yêu cầu bài.

137
00:11:23,390 --> 00:11:30,620
Bây giờ để đặt, để tôi chỉ cần sao chép này, và sau đó dán nó ở đây.

138
00:11:30,620 --> 00:11:35,360
Và sau đó để đưa vào đó món ăn điểm cuối,

139
00:11:35,360 --> 00:11:39,100
bởi vì nó đặt trên các món ăn điểm cuối không có ý nghĩa.

140
00:11:39,100 --> 00:11:44,440
Bài đăng có nghĩa là bạn đang đăng một món ăn mới lên máy chủ.

141
00:11:44,440 --> 00:11:50,992
Một đặt trên các món ăn điểm kết thúc không có ý nghĩa,

142
00:11:50,992 --> 00:11:55,516
vì vậy ở đây những gì tôi sẽ làm là tôi

143
00:11:55,516 --> 00:12:00,664
sẽ trả lời lại với các

144
00:12:00,664 --> 00:12:06,660
hoạt động PUT thông điệp không được hỗ trợ trên /dĩa.

145
00:12:06,660 --> 00:12:14,790
Bên cạnh đó, tôi cũng sẽ, Bao gồm một mã trạng thái của 403.

146
00:12:14,790 --> 00:12:19,987
403 có nghĩa là hoạt động của họ không được hỗ trợ.

147
00:12:19,987 --> 00:12:24,319
Vì vậy, nếu bạn nhìn lại bảng mã phản hồi HTTP,

148
00:12:24,319 --> 00:12:30,600
bạn sẽ thấy mã tương ứng 403 những gì nó đại diện ở đó.

149
00:12:30,600 --> 00:12:34,650
Vì vậy, đó là những gì tôi đang sử dụng cho bài viết.

150
00:12:34,650 --> 00:12:39,879
Để xóa, tôi sẽ sao chép

151
00:12:39,879 --> 00:12:44,777
cái này và xóa tôi sẽ,

152
00:12:47,537 --> 00:12:55,960
Đơn giản chỉ cần phân tích cú pháp này, và sau đó chúng ta sẽ nói, Xóa tất cả các món ăn.

153
00:12:55,960 --> 00:13:02,200
Vì vậy, khi bạn gửi một yêu cầu xóa trên đó /dishes điểm cuối.

154
00:13:02,200 --> 00:13:04,900
Nó được hiểu là có

155
00:13:04,900 --> 00:13:08,960
nghĩa là khách hàng muốn xóa tất cả các thông tin món ăn ở phía máy chủ.

156
00:13:08,960 --> 00:13:11,300
Bây giờ, đây là một hoạt động nguy hiểm, vì vậy

157
00:13:11,300 --> 00:13:15,540
bạn đảm bảo rằng bạn không cho phép người dùng đối tác thực hiện.

158
00:13:15,540 --> 00:13:17,750
Vì vậy, sau này, khi chúng ta nghiên cứu xác thực,

159
00:13:17,750 --> 00:13:23,220
chúng ta sẽ thấy làm thế nào chúng ta có thể res kiểm tra hoạt động này để chỉ người dùng đặc quyền.

160
00:13:23,220 --> 00:13:28,620
Nhưng một lần nữa, như bạn thấy, đây là một hoạt động nguy hiểm, vì vậy hãy nhớ về điều đó.

161
00:13:28,620 --> 00:13:33,340
Vì vậy, bây giờ bạn thấy rằng trong các món ăn cuối cùng, chúng tôi đã nhận được, đặt, đăng,

162
00:13:33,340 --> 00:13:35,130
và xóa hỗ trợ.

163
00:13:35,130 --> 00:13:41,520
Chúng ta cũng hỗ trợ rằng trên các món ăn/:Dishid điểm cuối.

164
00:13:41,520 --> 00:13:46,280
Vì vậy, tôi sẽ sao chép các get, put, post, và xóa các phương pháp từ đây,

165
00:13:48,530 --> 00:13:54,175
và sau đó gọi tất cả trong số họ cũng được hỗ trợ trên

166
00:13:54,175 --> 00:14:00,360
đĩa/: dishid.

167
00:14:00,360 --> 00:14:06,913
Vì vậy, đây là cho get, và chúng tôi sao chép điều đó và

168
00:14:06,913 --> 00:14:11,480
đăng, đặt, và xóa.

169
00:14:11,480 --> 00:14:13,330
Làm thế nào để chúng ta xử lý từng cái này?

170
00:14:13,330 --> 00:14:19,460
Vì vậy, để có được, nếu tôi nhận được một yêu cầu trên món ăn/dishid,

171
00:14:19,460 --> 00:14:22,750
những gì tôi muốn làm là để trích xuất tham số này và

172
00:14:22,750 --> 00:14:27,000
sau đó gửi nó trở lại trong yêu cầu, trong tin nhắn trả lời.

173
00:14:27,000 --> 00:14:29,725
Vì vậy, chúng tôi sẽ nói, chúng tôi sẽ gửi,

174
00:14:39,018 --> 00:14:41,625
Chi tiết của món ăn.

175
00:14:44,584 --> 00:14:46,910
Giờ thì món nào?

176
00:14:46,910 --> 00:14:51,570
Thông tin này nằm trong tham số.

177
00:14:51,570 --> 00:14:55,335
Vì vậy, giá trị tham số này có thể lấy từ

178
00:14:55,335 --> 00:15:02,300
Req.params.dishid.

179
00:15:02,300 --> 00:15:07,510
Vì vậy, disHid này, như bạn thấy, tên mà bạn sử dụng ở đây nên phù hợp với giá trị này ở đây.

180
00:15:07,510 --> 00:15:09,370
Vì vậy, nếu bạn chỉ đơn giản là nhìn thấy ID ở đây,

181
00:15:09,370 --> 00:15:13,220
điều này cũng nên được tương ứng với SID cho ở đây.

182
00:15:13,220 --> 00:15:17,920
Vì vậy, tên chính nó không có nghĩa là bất cứ điều gì, ngoại trừ tên tham số

183
00:15:17,920 --> 00:15:23,400
này và điều này nên phù hợp với nhau, để bạn có thể truy xuất các thông tin một cách chính xác.

184
00:15:25,090 --> 00:15:30,470
Vì vậy, chúng tôi sẽ nói, gửi các thông số món ăn DiSid và

185
00:15:30,470 --> 00:15:37,360
sau đó chúng tôi sẽ nói với bạn.

186
00:15:37,360 --> 00:15:43,160
Vì vậy, theo cách đó chúng ta biết rằng máy chủ đang nhận được các tham số món ăn..

187
00:15:43,160 --> 00:15:47,350
Vì vậy, nếu tôi nói /dishes/23 có một số câu trả lời

188
00:15:47,350 --> 00:15:52,350
sẽ gửi các chi tiết của món ăn 23 cho bạn và như vậy.

189
00:15:52,350 --> 00:15:57,632
Vì vậy, chúng ta sẽ thấy làm thế nào nó hoạt động khi chúng ta sử dụng bài để kiểm tra máy chủ này.

190
00:15:57,632 --> 00:15:59,584
Bây giờ để đăng bài.

191
00:15:59,584 --> 00:16:03,530
Đối với bài viết, phương pháp này sẽ không được hỗ trợ,

192
00:16:03,530 --> 00:16:07,060
vì vậy tôi sẽ chỉ sao chép phần này.

193
00:16:07,060 --> 00:16:12,205
nó không có ý nghĩa để làm một bài đăng trên một ID món ăn cụ thể,

194
00:16:12,205 --> 00:16:16,375
bởi vì bạn không cố gắng để thêm một món ăn mới.

195
00:16:16,375 --> 00:16:21,360
Nhưng bạn muốn sửa đổi, và sửa đổi được thực hiện bằng cách sử dụng các hoạt động put.

196
00:16:21,360 --> 00:16:28,111
Vì vậy, chúng tôi sẽ nói, POST hoạt động không được hỗ trợ trên /món ăn.

197
00:16:33,331 --> 00:16:36,360
Và sau đó tôi sẽ thêm vào.

198
00:16:39,750 --> 00:16:43,197
Req.params.dishid.

199
00:16:43,197 --> 00:16:47,535
Vì vậy, điều này sẽ gửi lại bài nói không được hỗ trợ trên các

200
00:16:47,535 --> 00:16:50,752
món ăn/23 trong tin nhắn trả lời.

201
00:16:50,752 --> 00:16:55,926
Bây giờ, đối với PUT, Đối với PUT, chúng ta sẽ nói,

202
00:16:59,902 --> 00:17:08,799
res.end và nói Will, cập nhật món ăn.

203
00:17:13,902 --> 00:17:20,978
Req.params.dishid.

204
00:17:28,915 --> 00:17:31,675
Hay đúng hơn, chúng ta sẽ làm theo cách này.

205
00:17:33,785 --> 00:17:39,141
Trước tiên tôi sẽ viết, Vì vậy

206
00:17:39,141 --> 00:17:45,345
res.write có thể được sử dụng để thêm một dòng vào thư trả lời.

207
00:17:45,345 --> 00:17:50,077
Vì vậy, chúng tôi sẽ nói cập nhật các món ăn.

208
00:17:50,077 --> 00:17:58,655
Và chúng ta sẽ nói Req.params.Dishid.

209
00:17:58,655 --> 00:18:06,245
Và vì đây là một hoạt động PUT, và nếu cơ thể chứa chuỗi JSON,

210
00:18:06,245 --> 00:18:10,277
chứa các chi tiết của món ăn,

211
00:18:10,277 --> 00:18:17,310
tôi có thể trích xuất chuỗi JSON vì chúng tôi đang sử dụng bộ phân tích cú pháp cơ thể.

212
00:18:17,310 --> 00:18:21,649
Vì vậy, chúng tôi sẽ nói sẽ

213
00:18:21,649 --> 00:18:26,569
cập nhật các món ăn:.

214
00:18:30,234 --> 00:18:31,924
Món nào?

215
00:18:31,924 --> 00:18:34,822
req.body.name.

216
00:18:38,122 --> 00:18:38,657
Thêm nữa.

217
00:18:40,531 --> 00:18:45,701
Với chi tiết,

218
00:18:45,701 --> 00:18:55,250
req.body.description.

219
00:18:59,320 --> 00:19:08,800
Bây giờ, khi chúng tôi cập nhật các món ăn, Tôi muốn thêm một, Dòng mới có.

220
00:19:08,800 --> 00:19:11,411
Vì vậy, tôi sẽ nói '/n' ở đó.

221
00:19:14,500 --> 00:19:19,257
Vì vậy, khi bạn thực hiện một PUT, bạn đang gửi lại thông tin về ID món ăn bạn

222
00:19:19,257 --> 00:19:22,674
đang cập nhật, và cũng có thể, các chi tiết bạn đang cập nhật.

223
00:19:22,674 --> 00:19:26,997
Tên và mô tả,

224
00:19:26,997 --> 00:19:34,318
mà phải nằm trong nội dung của tin nhắn PUT ở đó.

225
00:19:34,318 --> 00:19:41,868
Để xóa, Nó sẽ nói Xóa món ăn, và req.params.dishid.

226
00:19:41,868 --> 00:19:47,970
Và vì vậy để xóa, đây là hoạt động sẽ được thực hiện.

227
00:19:47,970 --> 00:19:51,607
Vì vậy, bạn thấy rằng bây giờ chúng tôi có get, put, post, và

228
00:19:51,607 --> 00:19:55,838
xóa các hoạt động trên các món dịch/dishid, điểm cuối, và

229
00:19:55,838 --> 00:20:00,590
cũng có được, put, bài hoạt động trên /dishes, điểm cuối.

230
00:20:00,590 --> 00:20:03,765
Vì vậy, bây giờ chúng ta hãy lưu các thay đổi.

231
00:20:03,765 --> 00:20:05,387
Và khởi động lại máy chủ của chúng tôi.

232
00:20:08,245 --> 00:20:10,643
Khởi động máy chủ bằng cách nói npm start.

233
00:20:10,643 --> 00:20:15,611
Bây giờ chúng ta hãy đi đến người đưa thư và gửi một vài yêu cầu đến máy chủ này và

234
00:20:15,611 --> 00:20:17,270
xem những gì nó trả lại.

235
00:20:17,270 --> 00:20:22,287
Hãy để tôi phát hành đầu tiên một get đến máy chủ địa phương 3,000 và xem những gì nó trở lại.

236
00:20:22,287 --> 00:20:26,832
Vì vậy, khi bạn gửi một yêu cầu để có được máy chủ địa phương 3.000,

237
00:20:26,832 --> 00:20:30,798
nó vẫn là trả về chỉ mục bắt đầu trang HTML,

238
00:20:30,798 --> 00:20:35,069
bởi vì việc xử lý tập tin tĩnh vẫn còn tại chỗ.

239
00:20:35,069 --> 00:20:41,564
Bây giờ hãy để tôi gửi một yêu cầu get để localhost: 3000 /món ăn, và điều này,

240
00:20:41,564 --> 00:20:48,383
như bạn mong đợi, sẽ gửi lại một câu trả lời nói rằng chúng tôi sẽ gửi tất cả các món ăn cho bạn.

241
00:20:48,383 --> 00:20:56,350
Bây giờ, chúng ta hãy gửi một yêu cầu POST đến localhost:3000/món ăn.

242
00:20:56,350 --> 00:21:01,200
Vì vậy, đây là nơi bạn có thể thay đổi các phương pháp khác nhau mà bạn muốn thực hiện.

243
00:21:01,200 --> 00:21:02,880
Nhưng khi bạn gửi một bài đăng,

244
00:21:02,880 --> 00:21:08,570
bạn muốn bao gồm một số chi tiết trong nội dung của thư bởi vì

245
00:21:08,570 --> 00:21:12,920
có ai đó đang mong bạn gửi thông tin trong nội dung của thư.

246
00:21:12,920 --> 00:21:17,967
Vì vậy, bấm vào cơ thể ở đây và bấm vào thô ở đây.

247
00:21:17,967 --> 00:21:23,395
Và sau đó, đối với văn bản, bạn chọn điều này để JSON để

248
00:21:23,395 --> 00:21:26,377
sử dụng ứng dụng JSON.

249
00:21:26,377 --> 00:21:31,081
Vì vậy, loại nội dung sẽ là ứng dụng/JSON

250
00:21:31,081 --> 00:21:34,220
trong yêu cầu mà bạn gửi.

251
00:21:34,220 --> 00:21:38,658
Vì vậy, vì đây là một đối tượng JSON, vì vậy

252
00:21:38,658 --> 00:21:43,103
trong niềng răng, tôi sẽ nói tên.

253
00:21:45,320 --> 00:21:50,727
Tôi sẽ chỉ đơn giản là gõ vào bài kiểm tra,

254
00:21:50,727 --> 00:21:53,939
và mô tả.

255
00:22:01,212 --> 00:22:05,760
Một số thông tin tiêu chuẩn ở đây, vì vậy bạn thấy rằng đây là một chuỗi JSON

256
00:22:05,760 --> 00:22:10,900
có chứa hai thuộc tính, tên và mô tả và các giá trị tương ứng.

257
00:22:10,900 --> 00:22:13,858
Vì vậy, chúng ta hãy gửi một bài yêu cầu đến máy chủ.

258
00:22:13,858 --> 00:22:18,294
Khi bạn gửi một yêu cầu bài đăng đến máy chủ, như bạn thấy,

259
00:22:18,294 --> 00:22:24,290
trong bài trả lời nó nói sẽ thêm các món ăn: chi tiết tuần kiểm tra: mô tả.

260
00:22:24,290 --> 00:22:30,368
Vì vậy, như bạn có thể thấy, hai mảnh thông tin được trích xuất từ cơ thể

261
00:22:30,368 --> 00:22:35,772
của JSON yêu cầu [không nghe được] và sau đó bao gồm trong câu trả lời.

262
00:22:35,772 --> 00:22:39,459
Hãy gửi một yêu cầu đặt cho các món ăn.

263
00:22:39,459 --> 00:22:43,029
Khi bạn gửi một yêu cầu đặt cho các món ăn, như bạn thấy,

264
00:22:43,029 --> 00:22:48,654
nó nói PUT hoạt động không được hỗ trợ trên /món ăn, và nhìn vào tình trạng ở đây.

265
00:22:48,654 --> 00:22:52,580
Nó nói Tình trạng: 403 Cấm.

266
00:22:52,580 --> 00:22:57,570
Vì vậy, thao tác này không được phép trên điểm cuối này.

267
00:22:57,570 --> 00:23:01,430
Hãy thực hiện một thao tác DELETE trên các món ăn.

268
00:23:01,430 --> 00:23:04,240
Khi bạn xóa hoạt động trên các món ăn,

269
00:23:04,240 --> 00:23:09,270
sau đó bạn sẽ nhận thấy rằng nó nói xóa tất cả các món ăn.

270
00:23:09,270 --> 00:23:11,560
Vì vậy, đó là câu trả lời mà bạn nhận được trở lại.

271
00:23:12,920 --> 00:23:15,410
Vì vậy, bạn thấy rằng bài get, đặt và

272
00:23:15,410 --> 00:23:20,610
xóa trên điểm cuối /dishes hoạt động như bạn mong đợi.

273
00:23:20,610 --> 00:23:24,507
Bây giờ chúng ta hãy làm một get trên các món ăn /23.

274
00:23:24,507 --> 00:23:29,017
Vì vậy, 23 đây là tham

275
00:23:29,017 --> 00:23:34,710
số, ID của món ăn mà bạn muốn nhận được.

276
00:23:34,710 --> 00:23:38,716
Vì vậy, khi bạn gửi một yêu cầu mà máy chủ sẽ trả lời,

277
00:23:38,716 --> 00:23:41,878
sẽ gửi chi tiết của món ăn: 23 cho bạn.

278
00:23:41,878 --> 00:23:47,421
Vì vậy, bạn thấy rằng tham số đã được trích xuất từ thư yêu cầu và

279
00:23:47,421 --> 00:23:50,645
sau đó bao gồm trong thư trả lời.

280
00:23:50,645 --> 00:23:54,850
Hãy làm một bài về vấn đề này.

281
00:23:54,850 --> 00:23:59,580
Và như bạn đã biết, POST không được phép trên điểm cuối này, và vì vậy

282
00:23:59,580 --> 00:24:03,450
đó là lý do tại sao bạn nhận được một trạng thái 403 Cấm về vấn đề này.

283
00:24:03,450 --> 00:24:05,728
Hãy thực hiện một thao tác PUT về điều đó.

284
00:24:05,728 --> 00:24:10,040
Vì vậy, đối với các hoạt động PUT, bạn nhận thấy rằng cơ thể vẫn chứa nó.

285
00:24:10,040 --> 00:24:13,950
Vì vậy, trong POST, khi bạn nhập một giá trị ở đây,

286
00:24:13,950 --> 00:24:18,720
nó sẽ được giữ lại và có thể được bao gồm trong các yêu cầu khác mà bạn đang gửi.

287
00:24:18,720 --> 00:24:25,087
Vì vậy, khi bạn gửi một yêu cầu PUT trên điểm cuối, món dịch/23.

288
00:24:25,087 --> 00:24:28,650
Vì vậy, bạn nhận thấy rằng nó nói cập nhật các món ăn, 23.

289
00:24:28,650 --> 00:24:31,780
Sẽ cập nhật món ăn, tên của món ăn,

290
00:24:31,780 --> 00:24:36,200
với các chi tiết, mô tả của món ăn ở đây.

291
00:24:36,200 --> 00:24:41,130
Và sau đó, chúng ta hãy làm một thao tác xóa trên điểm cuối đó và

292
00:24:41,130 --> 00:24:45,140
sau đó nó nói, d xóa món ăn: 23.

293
00:24:45,140 --> 00:24:52,210
Vì vậy, tất cả các điểm cuối được hỗ trợ như bạn thấy trong ví dụ này ở đây.

294
00:24:52,210 --> 00:24:58,430
Vì vậy, chúng tôi đã thực hiện nhận được PUT, POSRT, và xóa các hoạt động trên cả hai điểm cuối /dishes

295
00:24:58,430 --> 00:25:03,830
và cũng là /dishes/ điểm cuối id món ăn.

296
00:25:03,830 --> 00:25:08,010
Vì vậy, bạn thấy cách chúng tôi đã thực hiện hỗ trợ điểm cuối REST API cho

297
00:25:08,010 --> 00:25:12,730
một tập hợp các điểm cuối REST API.

298
00:25:12,730 --> 00:25:17,405
Bây giờ, với điều này, chúng tôi hoàn thành phần đầu của bài tập này.

299
00:25:17,405 --> 00:25:22,378
Vì vậy, ở đây chúng ta đã thấy làm thế nào chúng ta có thể sử dụng express để xây dựng và

300
00:25:22,378 --> 00:25:26,755
thực hiện các điểm cuối REST API cho các món ăn.

301
00:25:26,755 --> 00:25:27,885
Bây giờ, đây là thời điểm tốt

302
00:25:27,885 --> 00:25:32,895
để bạn thực hiện một cam kết git với thông điệp Express Simple REST.

303
00:25:33,895 --> 00:25:42,361
Theo thiết bị đầu cuối tôi sẽ bắt đầu, máy chủ.

304
00:25:42,361 --> 00:25:45,845
Kiểm tra xem ba trong số các mục đã được thay đổi.

305
00:25:45,845 --> 00:25:52,527
Vì vậy, git thêm, git commit -m,

306
00:25:52,527 --> 00:26:01,750
Express Simple REST, Và kiểm tra các thiết lập.

307
00:26:01,750 --> 00:26:08,670
Vì vậy, như bạn có thể thấy, sử dụng Express bạn có thể dễ dàng thực hiện hỗ trợ cho REST API.

308
00:26:08,670 --> 00:26:15,300
Và như bạn có thể thấy từ danh sách này, bạn xây dựng các ứng dụng get, PUT,

309
00:26:15,300 --> 00:26:21,590
POST, và xóa các phương pháp cho tất cả các điểm cuối REST API như thế này.

310
00:26:21,590 --> 00:26:24,601
Bây giờ hãy tưởng tượng bạn có một ngàn điểm cuối API REST,

311
00:26:24,601 --> 00:26:27,347
và bạn cần phải xây dựng một cái gì đó như thế này.

312
00:26:27,347 --> 00:26:33,344
Tệp index.js của bạn sẽ phát nổ với rất nhiều điểm cuối REST API khác nhau.

313
00:26:33,344 --> 00:26:37,744
Và mỗi người được xử lý bằng cách sử dụng app.get,

314
00:26:37,744 --> 00:26:41,536
app.put, app.delete và app.post của riêng mình.

315
00:26:41,536 --> 00:26:46,336
Bây giờ Wxpress hỗ trợ một cách phân chia công việc này thành

316
00:26:46,336 --> 00:26:48,442
nhiều, nhiều ứng dụng Express,

317
00:26:48,442 --> 00:26:54,580
sau đó có thể kết hợp lại với nhau để tạo thành ứng dụng Express tổng thể.

318
00:26:54,580 --> 00:26:58,260
Đây là nơi chúng tôi sẽ sử dụng Express Router

319
00:26:58,260 --> 00:27:01,960
để có thể xây dựng một ứng dụng Express mini.

320
00:27:01,960 --> 00:27:06,070
Và sau đó, bên trong một tập tin Express Router,

321
00:27:06,070 --> 00:27:10,040
chúng tôi sẽ hỗ trợ điểm cuối REST API cho một nhóm các phần REST API.

322
00:27:10,040 --> 00:27:13,190
Vì vậy, ví dụ, đối với các món ăn, và các món ăn DisHid,

323
00:27:13,190 --> 00:27:15,598
tất cả chúng có thể được hỗ trợ trong một tập tin.

324
00:27:15,598 --> 00:27:20,694
Tương tự như vậy, trong nhiệm vụ, bạn sẽ hỗ trợ một

325
00:27:20,694 --> 00:27:25,339
điểm cuối API REST được gọi là chương trình khuyến mãi và chương trình/:PromoID.

326
00:27:25,339 --> 00:27:29,570
Và sau đó, bạn sẽ hỗ trợ một REST API và

327
00:27:29,570 --> 00:27:34,241
cho các nhà lãnh đại/nhà lãnh đạo, và /Leader:Leaderid.

328
00:27:34,241 --> 00:27:39,088
Vì vậy, mỗi nhóm này có thể được thực hiện riêng biệt như nhiều

329
00:27:39,088 --> 00:27:43,120
ứng dụng Express sử dụng Express Router.

330
00:27:43,120 --> 00:27:46,230
Vì vậy, đó là những gì tôi sẽ minh họa cho bạn cho

331
00:27:46,230 --> 00:27:52,150
các món ăn cuối cùng trong phần tiếp theo của bài tập này.

332
00:27:52,150 --> 00:27:57,668
Vì vậy, để làm điều đó, chúng tôi nhận ra rằng nếu chúng tôi đặt tất cả các tập tin trong một thư mục duy nhất,

333
00:27:57,668 --> 00:28:01,498
sau đó một lần nữa cấu trúc thư mục của bạn sẽ trông lộn xộn.

334
00:28:01,498 --> 00:28:07,731
Vì vậy, sở thích của tôi là tạo một thư mục ở đây có tên là route.

335
00:28:07,731 --> 00:28:12,591
Và thư mục tuyến đường này sẽ chứa tất cả các bộ định tuyến mà tôi sẽ

336
00:28:12,591 --> 00:28:15,450
thiết kế bằng cách sử dụng Express Router.

337
00:28:15,450 --> 00:28:19,465
Vì vậy, trong thư mục tuyến đường, tôi sẽ tạo ra một tập tin mới được gọi là

338
00:28:19,465 --> 00:28:27,270
dishRouter.js.

339
00:28:27,270 --> 00:28:31,332
Và tập tin dishRouter.js này sẽ chứa

340
00:28:31,332 --> 00:28:36,972
việc thực hiện việc xử lý điểm cuối REST API cho

341
00:28:36,972 --> 00:28:41,281
/dishes và /Dishes:DISHID điểm cuối.

342
00:28:41,281 --> 00:28:44,626
Bây giờ làm thế nào để chúng ta sử dụng Express Router?

343
00:28:44,626 --> 00:28:46,910
Hãy xem làm thế nào chúng ta có thể sử dụng nó.

344
00:28:46,910 --> 00:28:51,050
Bây giờ Express Router đi kèm với Express, vì vậy chúng tôi không cần phải cài đặt một

345
00:28:51,050 --> 00:28:53,130
mô-đun Node khác.

346
00:28:53,130 --> 00:28:56,970
Thay vào đó, chúng tôi có thể làm việc với Express mà chúng tôi đã cài đặt.

347
00:28:56,970 --> 00:29:02,308
Vì vậy, để làm điều đó, tại dấu nhắc đó, gõ, const express

348
00:29:02,308 --> 00:29:07,200
= require ('express');.

349
00:29:07,200 --> 00:29:09,950
Vì vậy, lưu ý rằng, vì đây là một ứng dụng mini,

350
00:29:09,950 --> 00:29:15,000
chúng tôi vẫn yêu cầu thể hiện ngay cả trong tập tin dishRouter.js này.

351
00:29:15,000 --> 00:29:18,495
Và từ kiến thức của bạn về các module Node, một khi bạn xác định một file mới,

352
00:29:18,495 --> 00:29:20,251
nó sẽ trở thành module Node riêng của nó.

353
00:29:20,251 --> 00:29:24,708
Và mô-đun Node này sau đó có thể được nhập vào index.js.

354
00:29:24,708 --> 00:29:29,520
Vì vậy, bạn thấy kết nối đã có giữa cách chúng ta có thể tái cấu trúc

355
00:29:29,520 --> 00:29:33,415
ứng dụng của chúng tôi thành nhiều tập tin bằng cách sử dụng các module Node.

356
00:29:33,415 --> 00:29:39,525
Vì vậy, chúng tôi sẽ thiết lập yêu cầu Express, sau đó chúng tôi sẽ nói const

357
00:29:39,525 --> 00:29:44,830
BodyParser yêu cầu ('cơ thể-phân tích cú pháp').

358
00:29:44,830 --> 00:29:50,310
Vì vậy, chúng tôi đã cài đặt BodyParser trong các bước trước của bài tập,

359
00:29:50,310 --> 00:29:51,634
vì vậy chúng tôi có thể sử dụng điều đó.

360
00:29:51,634 --> 00:29:55,040
Bây giờ để sử dụng một bộ định tuyến Express,

361
00:29:55,040 --> 00:30:00,636
hãy để tôi khai báo const DishRouter = Express.R.

362
00:30:00,636 --> 00:30:05,769
và trên express, nó hỗ trợ giao diện router này, vì vậy chúng tôi sẽ chỉ đơn giản

363
00:30:05,769 --> 00:30:11,430
nói Express.Router và điều này sẽ tuyên bố DishRouter là một bộ định tuyến Express.

364
00:30:11,430 --> 00:30:13,951
Vì vậy, trong nhiều ứng dụng Express,

365
00:30:13,951 --> 00:30:18,820
một cái nhìn sâu sắc ở đây tôi có thể xử lý rằng DishRouter mã liên quan ở đây.

366
00:30:19,830 --> 00:30:26,560
Vì vậy, một khi tôi tuyên bố này một router trong Express, sau đó tôi có thể nói DishRouter.

367
00:30:28,050 --> 00:30:33,337
Và sau đó trên DishRouter, nó hỗ trợ một phương thức gọi là phương thức route

368
00:30:33,337 --> 00:30:36,694
, có thể lấy một điểm cuối như một tham số.

369
00:30:36,694 --> 00:30:41,330
Vì vậy, tôi chỉ đơn giản là sẽ tuyên bố điểm cuối này a /.

370
00:30:41,330 --> 00:30:44,620
Bây giờ, bạn đang tự hỏi, đó không phải là món ăn sao?

371
00:30:44,620 --> 00:30:49,630
Bạn sẽ sớm thấy rằng tôi cần phải gắn kết

372
00:30:49,630 --> 00:30:53,140
bộ định tuyến Express này trong tập tin index.js của tôi.

373
00:30:53,140 --> 00:31:01,270
Vì vậy, trong tập tin index.js của tôi, tôi sẽ gắn kết bộ định tuyến nhanh này tại điểm cuối /dishes.

374
00:31:01,270 --> 00:31:03,300
Gắn một bộ định tuyến nhanh,

375
00:31:03,300 --> 00:31:05,900
một lần nữa, một khái niệm nữa mà tôi muốn bạn hiểu.

376
00:31:05,900 --> 00:31:08,408
Một lần nữa, tôi sẽ minh họa điều đó cho bạn trong một thời gian ngắn.

377
00:31:08,408 --> 00:31:13,368
Bây giờ, Dishrouter.route có nghĩa là bằng cách sử dụng phương pháp này,

378
00:31:13,368 --> 00:31:17,526
chúng tôi đang tuyên bố điểm cuối tại một vị trí duy nhất.

379
00:31:17,526 --> 00:31:21,316
Theo đó bạn có thể chuỗi tất cả có được, PUT, POST,

380
00:31:21,316 --> 00:31:25,219
xóa các phương pháp đã làm router món ăn này.

381
00:31:25,219 --> 00:31:30,139
Bây giờ, khi bạn nhìn vào index.js, hãy nhìn vào cách chúng tôi ngụ ý điều này.

382
00:31:30,139 --> 00:31:36,029
Vì vậy, chúng tôi có app.all và sau đó /món ăn, app.get/món ăn và /món ăn.

383
00:31:36,029 --> 00:31:40,795
Bây giờ, nếu bạn đã thực hiện một sai lầm, và app.post hướng dẫn của họ

384
00:31:40,795 --> 00:31:45,580
/dishes thay vì nếu bạn chỉ cần gõ /dish, sau đó điều gì sẽ xảy ra?

385
00:31:45,580 --> 00:31:49,050
Thao tác POST sẽ không được hỗ trợ trên các món ăn nhưng

386
00:31:49,050 --> 00:31:51,730
sẽ được hỗ trợ trên điểm cuối /dish.

387
00:31:53,170 --> 00:31:59,220
Để tránh vấn đề này, bộ định tuyến nhanh hỗ trợ điểm kết thúc tuyến đường này.

388
00:31:59,220 --> 00:32:00,090
Trên điểm kết thúc tuyến đường,

389
00:32:00,090 --> 00:32:05,860
bạn chỉ cần chỉ định điểm kết thúc mà bộ định tuyến này sẽ hoạt động.

390
00:32:05,860 --> 00:32:10,890
Và sau đó, get put phần phương pháp xóa, điều này chỉ đơn giản là xích vào đó.

391
00:32:10,890 --> 00:32:16,300
Vì vậy, nó sẽ là một nhóm các phương pháp thực hiện tất cả cùng nhau.

392
00:32:16,300 --> 00:32:20,345
Vì vậy, đó là lý do tại sao họ sử dụng một bộ định tuyến Express.

393
00:32:20,345 --> 00:32:24,185
Vì vậy, nó đi kèm với một vài

394
00:32:24,185 --> 00:32:28,525
hỗ trợ rất hữu ích để đảm bảo rằng thực hiện của bạn là chính xác.

395
00:32:28,525 --> 00:32:32,190
Vì vậy, bây giờ mà chúng ta sẽ làm điều đó như bộ định tuyến đĩa,

396
00:32:32,190 --> 00:32:37,920
những gì tôi sẽ làm là tôi sẽ loại bỏ điều này từ đây.

397
00:32:37,920 --> 00:32:42,990
Bây giờ, món ăn IDN chỉ ra, tôi sẽ để lại cho các

398
00:32:42,990 --> 00:32:47,565
bạn như là một bài tập trong bài tập đầu tiên của bạn, nhưng

399
00:32:47,565 --> 00:32:54,180
các món ăn cuối cùng, tôi sẽ cắt nó ra, tất cả các cách lên đến tất cả.

400
00:32:54,180 --> 00:32:59,350
Tôi sẽ cắt điều này ra khỏi index.js5 và

401
00:32:59,350 --> 00:33:04,580
để di chuyển đó vào DishRouter ở đây.

402
00:33:04,580 --> 00:33:11,887
Bây giờ khi tôi chuyển nó vào DishRouter, tôi không cần ứng dụng này nữa.

403
00:33:11,887 --> 00:33:18,267
Tôi chỉ đơn giản là chuỗi đó vào tuyến đường, vì vậy tôi sẽ chỉ đơn giản là nói .all và

404
00:33:18,267 --> 00:33:24,210
sau đó tôi không còn cần định nghĩa điểm cuối này ở đó.

405
00:33:24,210 --> 00:33:24,900
Đó là nó. Vì vậy,

406
00:33:24,900 --> 00:33:28,390
nó sẽ nói .all và sau đó chúng ta sẽ nói req, res, tiếp theo.

407
00:33:28,390 --> 00:33:31,470
Và điều này, tất cả đang hoạt động trên điểm cuối cụ thể này

408
00:33:31,470 --> 00:33:33,690
đã được chỉ định ở đây.

409
00:33:33,690 --> 00:33:37,920
Bây giờ, không chỉ vậy, chúng ta có thể chuỗi các phương pháp còn lại.

410
00:33:37,920 --> 00:33:41,360
Vì vậy, đó là lý do tại sao bạn thấy rằng tôi đã loại bỏ dấu chấm phẩy từ đây.

411
00:33:41,360 --> 00:33:46,270
Tôi sẽ xóa ứng dụng này và sau đó đính kèm nó vào đó.

412
00:33:46,270 --> 00:33:51,600
Vì vậy, không nhận được cũng được thay đổi vào tuyến đường, và sau đó tôi có thể loại bỏ

413
00:33:53,140 --> 00:33:57,740
phần này, xử lý sẽ vẫn chính xác giống như trước.

414
00:33:57,740 --> 00:34:05,520
Vì vậy, tương tự, Tôi sẽ loại bỏ, Ứng dụng có.

415
00:34:05,520 --> 00:34:10,850
Và sau đó một lần nữa, xóa nó khỏi bài đăng.

416
00:34:10,850 --> 00:34:11,865
Và điều tương tự.

417
00:34:17,447 --> 00:34:22,248
Để đặt, Và

418
00:34:22,248 --> 00:34:27,360
để xóa, cùng một điều.

419
00:34:27,360 --> 00:34:30,800
Vì vậy, lưu ý rằng không có dấu chấm phẩy ở đây

420
00:34:30,800 --> 00:34:34,670
, ở đây hoặc ở đây, nhưng cái cuối cùng, xóa, sẽ có dấu chấm phẩy tại chỗ.

421
00:34:34,670 --> 00:34:40,810
Vì vậy, nhóm này là một đơn vị duy nhất được thực hiện bằng cách sử dụng

422
00:34:40,810 --> 00:34:45,930
bộ định tuyến đĩa trên bộ định tuyến đặc biệt này, và tất cả những được xích lại với nhau.

423
00:34:47,640 --> 00:34:52,610
Và cũng có thể, tất nhiên, với xóa, tôi cần phải loại bỏ điểm kết thúc này.

424
00:34:52,610 --> 00:34:56,626
Đó là nó, thấy, cấu trúc sạch sẽ của mã ở đây.

425
00:34:56,626 --> 00:35:02,100
Vì vậy, về cơ bản, kết thúc thực hiện DishRouter, đúng,

426
00:35:02,100 --> 00:35:07,700
hãy nhớ, DishRouter này được định nghĩa bên trong các tập tin dishRouter.js.

427
00:35:07,700 --> 00:35:12,870
Bây giờ, tôi cần phải xuất khẩu này từ mô-đun nút này.

428
00:35:12,870 --> 00:35:17,500
Vì vậy, để xuất khẩu này, tôi sẽ đi đến dưới cùng ở đây và

429
00:35:17,500 --> 00:35:22,877
tôi sẽ nói module.exports và

430
00:35:22,877 --> 00:35:26,170
nói, DishRouter.

431
00:35:26,170 --> 00:35:27,030
Đó là nó.

432
00:35:27,030 --> 00:35:34,920
Vì vậy, bây giờ, DishRouter của tôi đang xuất khẩu tất cả mọi thứ mà tôi cần.

433
00:35:34,920 --> 00:35:41,170
Bây giờ, bạn đang nhìn vào điều này và nói, những gì về món ăn Colon.

434
00:35:41,170 --> 00:35:44,302
Đó sẽ là một phần trong nhiệm vụ đầu tiên của anh.

435
00:35:44,302 --> 00:35:47,010
Không chỉ vậy, bạn sẽ được triển khai cho

436
00:35:47,010 --> 00:35:53,000
hai điểm cuối API REST bổ sung, các chương trình khuyến mãi và các nhà lãnh đạo.

437
00:35:53,000 --> 00:35:57,960
Nhưng điều này đã cho bạn thấy cấu trúc của những gì một Express

438
00:35:57,960 --> 00:36:03,080
router triển khai của res API hỗ trợ trông như thế nào.

439
00:36:03,080 --> 00:36:05,070
Vì vậy, đây là cho Dishrouter.route.

440
00:36:05,070 --> 00:36:09,848
Và một điều cuối cùng trước khi tôi quên,

441
00:36:09,848 --> 00:36:18,140
chúng ta nên nói dishrouter.use (bodyParser.json ()).

442
00:36:20,326 --> 00:36:23,852
Bây giờ một khi bạn đã hoàn thành việc thực hiện DishRouter,

443
00:36:23,852 --> 00:36:26,130
bây giờ chúng ta có thể đi vào tập tin index.js.

444
00:36:26,130 --> 00:36:34,020
Kể từ khi DishRouter này là một mô-đun nút, một mô-đun nút tốt vẫn.

445
00:36:34,020 --> 00:36:38,120
Vì vậy, chúng ta cần phải nhập khẩu này vào ứng dụng của chúng tôi.

446
00:36:38,120 --> 00:36:44,250
Vì vậy, ngay tại đây, tôi sẽ nhập khẩu const D

447
00:36:46,000 --> 00:36:52,100
ishRouter là bằng yêu cầu.

448
00:36:52,100 --> 00:36:56,626
Bây giờ kể từ khi đây là một mô-đun nút dựa trên tập tin,

449
00:36:56,626 --> 00:37:03,000
tôi sẽ nói. /Routes/Dishrouter.

450
00:37:03,000 --> 00:37:09,850
Và một khi tôi đã tuyên bố họ ở đó, sau đó tôi đi vào mật mã ở đây.

451
00:37:09,850 --> 00:37:14,230
Và ngay đó, tôi nói app.use.

452
00:37:14,230 --> 00:37:19,130
Và tôi gắn bộ định tuyến tại một điểm cuối.

453
00:37:19,130 --> 00:37:20,930
Vậy làm thế nào để gắn kết bộ định tuyến?

454
00:37:20,930 --> 00:37:25,790
Tham số đầu tiên ở đây, tôi sẽ chỉ định các món ăn gạch chéo.

455
00:37:25,790 --> 00:37:29,480
Và tham số thứ hai, chỉ định DishRouter.

456
00:37:30,810 --> 00:37:31,830
Và đó là nó.

457
00:37:31,830 --> 00:37:35,080
Vì vậy, những gì điều này có nghĩa là trong ứng dụng thể hiện của tôi,

458
00:37:36,205 --> 00:37:41,435
bất kỳ yêu cầu đến rằng món ăn gạch chéo điểm cuối sẽ được xử lý bởi DishRouter,

459
00:37:41,435 --> 00:37:45,615
và điều đó sẽ được thực hiện bởi các mã có mặt ở đây, bởi

460
00:37:45,615 --> 00:37:50,755
vì chúng tôi đã nói DishRouter tuyến đường, và do đó, nhận thấy rằng điều này nói gạch chéo,

461
00:37:50,755 --> 00:37:54,575
do đó có nghĩa rằng điều này được gắn kết tại điểm cuối món ăn gạch chéo.

462
00:37:54,575 --> 00:37:59,378
Vì vậy, đó là lý do tại sao bất cứ điều gì đến thông qua các món ăn gạch chéo sẽ được gửi đến điều này và

463
00:37:59,378 --> 00:38:00,890
sẽ được xử lý bởi điều này.

464
00:38:02,730 --> 00:38:07,000
Một gợi ý lớn cho bạn để suy nghĩ về cách bạn sẽ thực hiện

465
00:38:07,000 --> 00:38:11,020
rằng điểm kết thúc id món ăn ruột kết.

466
00:38:11,020 --> 00:38:16,440
Bạn vẫn sẽ sử dụng cùng một tập tin dishRouter.js để cũng thực hiện hỗ trợ cho

467
00:38:16,440 --> 00:38:21,670
rằng, /Dishes/:Dishid điểm kết thúc.

468
00:38:21,670 --> 00:38:24,580
Đó là một gợi ý lớn khác cho anh, được rồi.

469
00:38:24,580 --> 00:38:29,260
Với những thay đổi này, chúng ta hãy lưu những thay đổi mà chúng tôi đã thực hiện

470
00:38:29,260 --> 00:38:33,870
cho ứng dụng của chúng tôi và sau đó khởi động lại máy chủ của chúng tôi và

471
00:38:33,870 --> 00:38:37,480
sau đó xem làm thế nào máy chủ của chúng tôi sẽ làm công việc của mình.

472
00:38:38,850 --> 00:38:44,190
Đi đến thiết bị đầu cuối, hãy để tôi khởi động lại máy chủ đó bằng cách gõ npm start.

473
00:38:44,190 --> 00:38:47,340
Và một khi máy chủ đang hoạt động và chạy, tôi sẽ đi đến người đưa thư và

474
00:38:47,340 --> 00:38:50,220
gửi yêu cầu từ người đưa thư đến máy chủ này.

475
00:38:51,220 --> 00:38:57,110
Đi đến người đưa thư, bây giờ tôi biết rằng máy chủ của tôi chỉ hỗ trợ

476
00:38:57,110 --> 00:39:01,690
các món ăn điểm cuối, tôi đã thực hiện các món ăn ID một phần của nó.

477
00:39:01,690 --> 00:39:05,570
Vì vậy, hãy để tôi gửi một yêu cầu get đến các món ăn địa phương và

478
00:39:05,570 --> 00:39:08,590
bạn sẽ thấy rằng nó hoạt động chính xác như trước đây.

479
00:39:08,590 --> 00:39:12,910
Bây giờ nếu bạn đã thực hiện một yêu cầu trước đó trong bài đăng sau đó bạn có thể chỉ cần nhấp vào đó và

480
00:39:12,910 --> 00:39:15,150
sau đó gửi lại yêu cầu đó.

481
00:39:16,940 --> 00:39:26,680
Đặt hoạt động không hoạt động, sau hoạt động, Làm việc như bạn thấy ở đó.

482
00:39:26,680 --> 00:39:32,370
Và sau đó chúng ta hãy gây ra thao tác xóa trên các món ăn.

483
00:39:32,370 --> 00:39:36,210
Và nó nói rằng xóa tất cả các món ăn như mong đợi.

484
00:39:36,210 --> 00:39:45,230
Vì vậy, đây là việc thực hiện các hỗ trợ API còn lại bằng cách sử dụng bộ định tuyến nhanh.

485
00:39:45,230 --> 00:39:48,950
Với điều này, chúng tôi hoàn thành nửa sau của bài tập này.

486
00:39:48,950 --> 00:39:54,490
Đây là thời điểm tốt để bạn có thể làm một nhận xét get với router thông điệp Express.

487
00:39:55,830 --> 00:40:00,896
Bây giờ chúng ta đã hoàn thành bài tập này, nơi chúng ta đã thấy cách Express có

488
00:40:00,896 --> 00:40:06,450
thể được sử dụng để hỗ trợ thực hiện hỗ trợ điểm cuối Res API trên máy chủ

489
00:40:06,450 --> 00:40:08,900
của chúng tôi, và cũng sử dụng bộ định tuyến Express,

490
00:40:08,900 --> 00:40:13,906
đó là thời gian để chuyển sang nhiệm vụ đầu tiên mà sau bài học này.

491
00:40:13,906 --> 00:40:20,030
[ NHẠC]