1
00:00:03,940 --> 00:00:08,444
В этом модуле в самом первом уроке

2
00:00:08,444 --> 00:00:14,115
мы узнали, как построить полноценный REST API сервер с помощью express.

3
00:00:14,115 --> 00:00:17,120
Таким образом, мы можем обслуживать

4
00:00:17,120 --> 00:00:22,185
запросы GET, PUT, POST и DELETE, поступающие к различным конечным точкам REST API.

5
00:00:22,185 --> 00:00:24,975
Но сам сервер просто возвращал

6
00:00:24,975 --> 00:00:29,115
простое сообщение в ответ на эти запросы.

7
00:00:29,115 --> 00:00:32,778
В реальном сервере REST API

8
00:00:32,778 --> 00:00:39,620
любой входящий запрос повлечет за собой соответствующую операцию, которая будет выполняться на задней панели

9
00:00:39,620 --> 00:00:46,610
базы данных, возможно, для извлечения данных для ответа на запрос GET

10
00:00:46,610 --> 00:00:52,430
или, возможно, для изменения данных, которые существуют на сервере в ответ на запрос PUT.

11
00:00:52,430 --> 00:00:56,270
Теперь в остальной части этого модуля

12
00:00:56,270 --> 00:01:03,465
мы изучили о том, как мы можем взаимодействовать с приложением узла с сервером MongoDB,

13
00:01:03,465 --> 00:01:10,500
будь то с помощью драйвера MongoDB или с помощью Mongoose.

14
00:01:10,500 --> 00:01:15,600
Теперь полноценный REST API сервер, который способен обрабатывать

15
00:01:15,600 --> 00:01:21,468
запрос от конца до конца, будет возможен только тогда, когда мы объединим их вместе.

16
00:01:21,468 --> 00:01:24,840
То есть, сервер на основе выражений, который выполняет

17
00:01:24,840 --> 00:01:29,340
всю обработку бизнес-логики и в то же время будет выдавать

18
00:01:29,340 --> 00:01:34,200
запросы базы данных к MongoDB

19
00:01:34,200 --> 00:01:40,790
с помощью драйвера узла MongoDB или с помощью Mongoose.

20
00:01:40,790 --> 00:01:42,780
Так как же нам объединить их вместе?

21
00:01:42,780 --> 00:01:47,040
Это то, что мы рассмотрим в этом конкретном уроке,

22
00:01:47,040 --> 00:01:51,230
и два упражнения, которые мы сделаем в рамках этого урока.

23
00:01:51,230 --> 00:01:55,875
Теперь мы узнали, как построить

24
00:01:55,875 --> 00:01:59,400
сервер REST API с помощью Express

25
00:01:59,400 --> 00:02:03,950
и обслуживать различные запросы, поступающие в конечные точки REST API.

26
00:02:03,950 --> 00:02:10,765
Мы также видели, как мы можем взаимодействовать с базой данных из нашего приложения узла.

27
00:02:10,765 --> 00:02:17,280
Теперь, учитывая, что у вас есть запрос GET, поступающий на сервер в качестве примера,

28
00:02:17,280 --> 00:02:20,550
для обработки этого запроса GET от конца до конца,

29
00:02:20,550 --> 00:02:25,500
запрос GET, поступающий от клиента, означает, что клиент хочет получить

30
00:02:25,500 --> 00:02:31,830
данные с сервера и использовать эти данные.

31
00:02:31,830 --> 00:02:34,590
Таким образом, запрос GET, поступающий на сервер, должен

32
00:02:34,590 --> 00:02:39,060
обрабатываться через различные обработки, выполняемые, например,

33
00:02:39,060 --> 00:02:43,880
сервером Express, и как только обработка будет выполнена,

34
00:02:43,880 --> 00:02:47,340
бизнес-логика Express сервера понимает, что ему нужно

35
00:02:47,340 --> 00:02:51,166
выполнить операцию запроса в базе данных.

36
00:02:51,166 --> 00:02:54,630
Таким образом, это может инициировать запрос к базе данных, чтобы

37
00:02:54,630 --> 00:02:58,605
получить набор документов из базы данных,

38
00:02:58,605 --> 00:03:02,850
а затем извлеченные данные будут

39
00:03:02,850 --> 00:03:07,650
преобразованы в ответное сообщение и затем отправлены обратно на сервер.

40
00:03:07,650 --> 00:03:15,340
Таким образом, эта сквозная обработка запроса и ответа включает в себя две части.

41
00:03:15,340 --> 00:03:18,060
Один, конечно, делает бизнес-логику

42
00:03:18,060 --> 00:03:23,070
на сервере Express, а затем выполняет взаимодействие с

43
00:03:23,070 --> 00:03:27,270
базой данных из приложения узла с Express сервера, который является

44
00:03:27,270 --> 00:03:32,580
приложением узла с использованием либо драйвера MongoDB, либо Mongoose.

45
00:03:32,580 --> 00:03:36,190
Мы будем использовать Mongoose в упражнениях.

46
00:03:36,190 --> 00:03:42,005
Аналогично, запрос POST, поступающий

47
00:03:42,005 --> 00:03:46,420
в конечную точку

48
00:03:46,420 --> 00:03:51,330
REST API на сервере, означает, что запрос POST приносит некоторые данные в теле сообщения.

49
00:03:51,330 --> 00:03:55,795
Таким образом, эта информация должна быть обработана на сервере Express

50
00:03:55,795 --> 00:04:01,150
и информация, которая должна быть сохранена

51
00:04:01,150 --> 00:04:07,208
в базе данных, должна быть извлечена из тела входящего POST запроса, а затем

52
00:04:07,208 --> 00:04:11,380
соответствующий запрос создания должен

53
00:04:11,380 --> 00:04:17,590
быть создан или инициирован с сервера Express в база данных MongoDB,

54
00:04:17,590 --> 00:04:19,450
и в запросе создания

55
00:04:19,450 --> 00:04:22,330
информация, которая была получена из тела

56
00:04:22,330 --> 00:04:25,870
запроса POST, будет отправлена в

57
00:04:25,870 --> 00:04:33,130
базу данных для создания нового документа в конкретной коллекции в базе данных.

58
00:04:33,130 --> 00:04:36,550
И тогда результат этой операции будет отправлен

59
00:04:36,550 --> 00:04:40,200
обратно клиенту в ответном сообщении.

60
00:04:40,200 --> 00:04:47,155
Таким образом, любая операция, которая выполняется в конечной точке REST API, будь то

61
00:04:47,155 --> 00:04:48,951
операция GET, PUT, POST или DELETE,

62
00:04:48,951 --> 00:04:51,005
как вы видите из этих двух примеров,

63
00:04:51,005 --> 00:04:58,063
инициирует соответствующую операцию базы данных за кулисами.

64
00:04:58,063 --> 00:05:01,120
Поэтому, поняв это взаимодействие,

65
00:05:01,120 --> 00:05:05,590
мы понимаем, что HTTP-запрос, поступающий в

66
00:05:05,590 --> 00:05:10,360
конечную точку REST API, должен быть сопоставлен в соответствующую операцию базы данных.

67
00:05:10,360 --> 00:05:12,260
Таким образом, каждый входящий запрос, GET, PUT, POST

68
00:05:12,260 --> 00:05:19,270
или DELETE означает, что определенный ресурс в базе данных

69
00:05:19,270 --> 00:05:23,530
может быть получен, может быть

70
00:05:23,530 --> 00:05:28,360
извлечен или группа ресурсов может быть получена из базы данных, а затем отправлена обратно на сервер,

71
00:05:28,360 --> 00:05:34,015
или ресурс может быть изменен в ответ на PUT или POST

72
00:05:34,015 --> 00:05:40,425
или даже запрос DELETE, поступающий на сервер REST API.

73
00:05:40,425 --> 00:05:44,170
Таким образом, это зависит от логики сервера Express,

74
00:05:44,170 --> 00:05:47,545
бизнес-логики,

75
00:05:47,545 --> 00:05:53,860
реализованной на сервере Express REST API, чтобы обрабатывать этот перевод входящего запроса, будь то запрос GET,

76
00:05:53,860 --> 00:05:58,765
PUT, POST или DELETE в соответствующую операцию базы данных.

77
00:05:58,765 --> 00:06:03,085
Итак, давайте рассмотрим пример этого чуть более подробно.

78
00:06:03,085 --> 00:06:07,480
Таким образом, приходя к комбинации Express маршрутизатора плюс

79
00:06:07,480 --> 00:06:12,445
MongoDB плюс Mongoose, выступающий в качестве ODM между ними,

80
00:06:12,445 --> 00:06:17,710
операции, которые должны быть выполнены из базы данных должны быть инициированы

81
00:06:17,710 --> 00:06:23,275
внутри маршрутизатора, который мы построили для каждой конечной точки REST API.

82
00:06:23,275 --> 00:06:24,310
Таким образом, внутри маршрутизатора,

83
00:06:24,310 --> 00:06:26,740
даже метод GET,

84
00:06:26,740 --> 00:06:28,615
PUT или метод POST.

85
00:06:28,615 --> 00:06:35,440
Соответствующее действие, которое должно быть выполнено в базе данных, будь то запрос GET,

86
00:06:35,440 --> 00:06:39,940
вызывающий метод поиска блюд,

87
00:06:39,940 --> 00:06:44,235
который должен быть выполнен, или запрос POST, вызывающий метод создания блюд,

88
00:06:44,235 --> 00:06:48,595
должен быть выполнен нашим сервером Express, в результате чего

89
00:06:48,595 --> 00:06:53,285
соответствующая операция инициирован в базе данных MongoDB.

90
00:06:53,285 --> 00:06:55,555
Таким образом, с этим пониманием того,

91
00:06:55,555 --> 00:07:00,655
как запросы переводятся в соответствующие операции базы данных,

92
00:07:00,655 --> 00:07:06,720
давайте перейдем к двум упражнениям, где мы рассмотрим обработку

93
00:07:06,720 --> 00:07:15,040
запросов GET, PUT, POST и DELETE, поступающих в конечные точки /Dishid, а

94
00:07:15,040 --> 00:07:18,940
также изменить конкретные комментарии, которые находятся

95
00:07:18,940 --> 00:07:24,470
в вложенных документах, вложенных в документ блюдо.