Эта статья является второй частью моей статьи «Создание API в Node, Express и MongoDB». В этой серии статей наша конечная цель - создать API-интерфейс node, express и mongoDB с полной аутентификацией и контейнеризацией с помощью Docker, а затем развернуть его в Интернете. . Возможно, мы сможем настроить и для него конвейеры CI / CD.

Так что скоро будет опубликовано много всего. Оставайтесь с нами и продолжайте кодировать.

Ссылка на первую статью:



Создание API в Node, Express и MongoDB
Наша цель medium.com



Я разделил свои статьи по тематике, чтобы вы могли продолжить работу по любой части.

Прочтите первую статью, если хотите начать с нуля.

Ссылка на репозиторий GitHub:



Давайте начнем,

В этой статье мы рассмотрим следующие темы:

  1. Ведение журнала (получение некоторой информации о клиенте в целях безопасности, например о типе запроса, отправляемого пользователем)
  2. Пользовательский обработчик ошибок. (обработка ошибки при сбое API или маршрута)
  3. Решение проблемы с Cors. (не паникуйте, мы подробно обсудим cors позже и поймем, почему это важно 😇)

Итак, у нас есть наш API, работающий на порту 3000. Давайте добавим в него логирование и посмотрим, как это нам поможет.

$ Установить morgan

npm install morgan

Теперь мы будем использовать morgan в нашем server.js, чтобы добавить журналы.

Здесь я сделал запрос GET с помощью почтальона, посмотрим, что мы получили в нашей консоли.

Итак, классно, мы получили, какой тип запроса сделал клиент, в данном случае запрос GET, и мы также регистрируем другие детали.

Давайте посмотрим еще на один пример, на этот раз я сделал запрос POST.

В консоли, на которой работает мой сервер, посмотрим, что у нас получилось. Итак, мы получили подробную информацию о запросе, сделанном клиентом. Итак, он работает без сбоев.

Наконец, мы реализовали ведение журнала в нашем приложении.

Теперь у нас есть проблема, позвольте мне сначала показать вам,

Позвольте просто перейти по ссылке кроме http: // localhost: 3000 / api / contacts

Например:

http: // localhost: 3000

or

http: // localhost: 3000 / ap

или что-нибудь еще.

мы получим ошибку, посмотрим как это выглядит

Давай решим это,

Итак, теперь мы создадим настраиваемый обработчик ошибок, который будет обрабатывать все запросы, которые мы не определили в наших маршрутах, и давать правильный ответ об ошибке.

сначала мы создадим функцию промежуточного программного обеспечения, которая будет генерировать настраиваемую ошибку

Здесь мы создали специальное промежуточное ПО для сообщений об ошибках, которое будет вызывать наше промежуточное ПО Пользовательской обработки ошибок с помощью next ().



Express предоставляет функцию настраиваемого промежуточного программного обеспечения для обработки ошибок, которая должна быть добавлена ​​в конце всех других функций промежуточного программного обеспечения.

Что происходит, когда мы не получаем релевантный маршрут, он создает настраиваемую ошибку, а затем, наконец, направляет ее через наше настраиваемое промежуточное программное обеспечение ошибок и дает нам обобщить ответ об ошибке.

Давайте теперь посмотрим или хромируем, что произойдет, если пользователь выберет неправильный маршрут.

Например:

http: // localhost: 3000

or

http: // localhost: 3000 / api и т. д.

Проверка другим неправильным маршрутом.

Кроме нашего маршрута, определенного в папке маршрутов, для любого другого маршрута мы получим сообщение об ошибке «не найден» с кодом ошибки 404,

потому что именно так мы определили наше собственное сообщение об ошибке и статус.

Итак, приятно видеть, что вы достигли этого, это много.

Мы реализовали в нашем API как ведение журнала, так и обработку ошибок.

Это базовые вещи, которые сделают ваш API более полезным и без сбоев.

Наконец, давайте решим проблему с корсом.

Q: Что такое корс?

A: Совместное использование ресурсов между источниками (CORS) - это механизм, который использует дополнительные заголовки HTTP, чтобы указать браузерам предоставить веб-приложению, работающему в одном источнике, доступ к выбранным ресурсам из другого источника.



Выше технический ответ, но позвольте мне объяснить вам и показать вам пример.

Предположим, наш API работает на порту 3000, и кто-то создал приложение, использующее наш API, а его интерфейс работает на порту 4000.

Теперь попробуйте выполнить fetch () или вызов XHR из внешнего интерфейса к API, работающему на порту 3000, вызовет ошибку CORS. Это связано с тем, что если ваш интерфейс работает на порту 3000, он не может отправлять запросы на другой порт, пока API не разрешит это. До сих пор наш API не может этого сделать. Если вы сделаете запрос к нашему API с другого порта, это приведет к ошибке CORS.

Давай решим.

Это всегда будет первое промежуточное программное обеспечение нашего API, которое будет направлять все запросы через него.

Это промежуточное ПО будет направлять все запросы клиентов через промежуточное ПО CORS и разрешать CORS. «*» В первой строке промежуточного программного обеспечения означает, что теперь любой веб-сайт может получить к нему доступ, вы также можете явно указать здесь URL-адрес веб-сайта, тогда только этот конкретный URL-адрес может получить доступ к ресурсам API.

Наконец, мы значительно улучшили наш API.

Теперь наш API может использовать любой клиент без проблем с CORS, надлежащего ведения журнала и полной обработки ошибок.

Итак, рада видеть вас так далеко.

В следующей части мы подключим наш API к базе данных (MongoDB). Я покажу вам самый простой способ интегрировать и использовать. Мы также немного узнаем о MongoDB и о том, как мы будем использовать его в нашем проекте.

JS Love !!!