В этом модуле в самом первом уроке
мы узнали, как построить полноценный REST API сервер с помощью express.
Таким образом, мы можем обслуживать
запросы GET, PUT, POST и DELETE, поступающие к различным конечным точкам REST API.
Но сам сервер просто возвращал
простое сообщение в ответ на эти запросы.
В реальном сервере REST API
любой входящий запрос повлечет за собой соответствующую операцию, которая будет выполняться на задней панели
базы данных, возможно, для извлечения данных для ответа на запрос GET
или, возможно, для изменения данных, которые существуют на сервере в ответ на запрос PUT.
Теперь в остальной части этого модуля
мы изучили о том, как мы можем взаимодействовать с приложением узла с сервером MongoDB,
будь то с помощью драйвера MongoDB или с помощью Mongoose.
Теперь полноценный REST API сервер, который способен обрабатывать
запрос от конца до конца, будет возможен только тогда, когда мы объединим их вместе.
То есть, сервер на основе выражений, который выполняет
всю обработку бизнес-логики и в то же время будет выдавать
запросы базы данных к MongoDB
с помощью драйвера узла MongoDB или с помощью Mongoose.
Так как же нам объединить их вместе?
Это то, что мы рассмотрим в этом конкретном уроке,
и два упражнения, которые мы сделаем в рамках этого урока.
Теперь мы узнали, как построить
сервер REST API с помощью Express
и обслуживать различные запросы, поступающие в конечные точки REST API.
Мы также видели, как мы можем взаимодействовать с базой данных из нашего приложения узла.
Теперь, учитывая, что у вас есть запрос GET, поступающий на сервер в качестве примера,
для обработки этого запроса GET от конца до конца,
запрос GET, поступающий от клиента, означает, что клиент хочет получить
данные с сервера и использовать эти данные.
Таким образом, запрос GET, поступающий на сервер, должен
обрабатываться через различные обработки, выполняемые, например,
сервером Express, и как только обработка будет выполнена,
бизнес-логика Express сервера понимает, что ему нужно
выполнить операцию запроса в базе данных.
Таким образом, это может инициировать запрос к базе данных, чтобы
получить набор документов из базы данных,
а затем извлеченные данные будут
преобразованы в ответное сообщение и затем отправлены обратно на сервер.
Таким образом, эта сквозная обработка запроса и ответа включает в себя две части.
Один, конечно, делает бизнес-логику
на сервере Express, а затем выполняет взаимодействие с
базой данных из приложения узла с Express сервера, который является
приложением узла с использованием либо драйвера MongoDB, либо Mongoose.
Мы будем использовать Mongoose в упражнениях.
Аналогично, запрос POST, поступающий
в конечную точку
REST API на сервере, означает, что запрос POST приносит некоторые данные в теле сообщения.
Таким образом, эта информация должна быть обработана на сервере Express
и информация, которая должна быть сохранена
в базе данных, должна быть извлечена из тела входящего POST запроса, а затем
соответствующий запрос создания должен
быть создан или инициирован с сервера Express в база данных MongoDB,
и в запросе создания
информация, которая была получена из тела
запроса POST, будет отправлена в
базу данных для создания нового документа в конкретной коллекции в базе данных.
И тогда результат этой операции будет отправлен
обратно клиенту в ответном сообщении.
Таким образом, любая операция, которая выполняется в конечной точке REST API, будь то
операция GET, PUT, POST или DELETE,
как вы видите из этих двух примеров,
инициирует соответствующую операцию базы данных за кулисами.
Поэтому, поняв это взаимодействие,
мы понимаем, что HTTP-запрос, поступающий в
конечную точку REST API, должен быть сопоставлен в соответствующую операцию базы данных.
Таким образом, каждый входящий запрос, GET, PUT, POST
или DELETE означает, что определенный ресурс в базе данных
может быть получен, может быть
извлечен или группа ресурсов может быть получена из базы данных, а затем отправлена обратно на сервер,
или ресурс может быть изменен в ответ на PUT или POST
или даже запрос DELETE, поступающий на сервер REST API.
Таким образом, это зависит от логики сервера Express,
бизнес-логики,
реализованной на сервере Express REST API, чтобы обрабатывать этот перевод входящего запроса, будь то запрос GET,
PUT, POST или DELETE в соответствующую операцию базы данных.
Итак, давайте рассмотрим пример этого чуть более подробно.
Таким образом, приходя к комбинации Express маршрутизатора плюс
MongoDB плюс Mongoose, выступающий в качестве ODM между ними,
операции, которые должны быть выполнены из базы данных должны быть инициированы
внутри маршрутизатора, который мы построили для каждой конечной точки REST API.
Таким образом, внутри маршрутизатора,
даже метод GET,
PUT или метод POST.
Соответствующее действие, которое должно быть выполнено в базе данных, будь то запрос GET,
вызывающий метод поиска блюд,
который должен быть выполнен, или запрос POST, вызывающий метод создания блюд,
должен быть выполнен нашим сервером Express, в результате чего
соответствующая операция инициирован в базе данных MongoDB.
Таким образом, с этим пониманием того,
как запросы переводятся в соответствующие операции базы данных,
давайте перейдем к двум упражнениям, где мы рассмотрим обработку
запросов GET, PUT, POST и DELETE, поступающих в конечные точки /Dishid, а
также изменить конкретные комментарии, которые находятся
в вложенных документах, вложенных в документ блюдо.