Рубрики
Без рубрики

Одобренные экспрессом Middlewares для использования в вашем API

Первоначально опубликовано на CoreyCleary.me. Это кросс-пост из моего блога контента. Я публикую новое продолжение … Tagged с узлом, JavaScript, Express.

Первоначально опубликовано в coreycleary.me . Это кросс-пост из моего блога контента. Я публикую новый контент каждую неделю или две, и вы можете Зарегистрируйтесь в моей рассылке Если вы хотите получить мои статьи непосредственно в свой почтовый ящик! Я также регулярно отправляю чит -листы и другие бесплатные.

Когда вы запускаете экспресс -проект, может быть запутанным выяснить все необходимые вам модули …

… И это ничем не отличается, когда дело доходит до промежуточного программного обеспечения.

Это не помогает – из коробки – Express – это «батареи не включены».

Экспресс просто не очень самоуверенный. Это обеспечивает эту базу, и вы остаетесь собрать оставшуюся часть проекта вместе.

С другой стороны, этот Freedom Express можно рассматривать как один из его сильных костюмов.

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

Вам может быть интересно – «Я вообще следую передовым практикам?»

Хорошей новостью является то, что есть несколько отличных ресурсов, которые дают вам некоторые руководства. Один из них – часто игнорируемые – ресурсы – это Экспресс-одобренный список промежуточного программного обеспечения Анкет

Вместо того, чтобы собрать вместе список модулей, спрашивая на форумах для рекомендаций модулей или просмотреть 10 различных учебных пособий, это «предварительно проверенный» список прямо из самой экспресс-команды.

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

Бодитель

Извлекает всю часть тела входящего запроса и выставляет его на req.body. По сути, вам нужно, чтобы это работало с/прочитав тело, отправленное в ваш API отдыха.

Обновление 3/2/20: Если вы используете экспресс-версию 4.16.0, вам, по-видимому, больше не нужно устанавливать модуль Body-Parser отдельно. Экспресс -команда перенесла его обратно в Express. При настройке средних волн вам просто нужно сделать app.use (express.json ()) и (если вы хотите проанализировать входящие запросы с помощью полезных нагрузок Urlencode) app.use (express.urlencoded ({endended: true})) сразу после этого.

печенье

Используется для хранения данных сеанса на клиенте в Cookie (в отличие от хранения данных сеанса на сервере, со ссылкой на идентификатор сеанса в cookie на стороне клиента).

Если я просто собираюсь хранить что-то простое, например, имя пользователя и ничего другого, то я пойду с этим модулем (в отличие от сеанса «Сервер” сеанс “) и оставлю его на стороне клиента cookie. Но обычно я работаю с более конфиденциальной и/или более сложной информацией, поэтому я чаще использую модуль сеанса на стороне сервера.

*См. Примечание ниже для дальнейшего руководства о том, когда использовать модули «сеанса» против «cookie-session».

корр

По моему опыту, трудно не использовать CORS. Если у вас есть несколько разных сайтов, которые будут делать HTTP -запросы на ваш сервер, или другой сервер с одним и тем же хостом, но другой порт ( http://localhost: 3000 to http://localhost: 4000 , например), вам нужно включить CORS.

Этот пост Вдается гораздо более подробно о CORS и сценариях, в которых вам нужно включить это.

Хорошей новостью является то, что вам не нужно включать CORS для всего. Вы можете передать параметры в модуль Cors Express и использовать белый список, Как описано здесь Анкет

Морган

У вас может быть установлена журнала для ошибок и тому подобного, но это зарегистрирует весь HTTP -запрос.

Если вам интересно, почему это полезно, подумайте о времени, когда вы могли иметь другую службу, разговаривающую с вашей службой узлов, и по какой -то причине она продолжала проваливаться (возможно, ошибка 400 плохого запроса). Регистрация запроса позволит вам увидеть, что на самом деле отправляется в ваш сервис – бесценен для устранения неполадок.

Просто убедитесь, что вы маскируете любую личную информацию, такую как SSN.

воодушевление

Используется, когда у вас есть запрос, содержащий заголовок «Multipart/Form-Data».

С точки зрения непрофессионала – всякий раз, когда вам нужно включить загрузку файлов из формы.

Подача статического

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

Если вы хотите еще более базовую настройку для обслуживания статических файлов и не хотите беспокоиться об этом модуле, вы можете использовать Express ‘instress.static (Подробнее здесь) .

Но для приложений на уровне производства я предпочитаю использовать обратный прокси, такой как Nginx или Haproxy, для обслуживания статических файлов. Вы даже можете сделать еще один шаг и использовать выделенный CDN (сеть доставки контента) для обслуживания статических файлов (цель CDN – сосредоточиться только на доставке статических активов).

сессия

Позволяет создать файл cookie в браузере только с ссылкой на уникальный идентификатор сеанса + настройка сервера данных сеанса.

Этот модуль поддерживает хранение данных сеанса в большом количестве магазинов. Смотрите совместимый список здесь Анкет

*См. Примечание ниже для дальнейшего руководства о том, когда использовать модули «сеанса» против «cookie-session».

** См. Примечание ниже об использовании этого с помощью модуля cookie-parser.

Заметки

  • cookie-session против сессияcookie-session readme.md Имеет хорошее руководство, когда вы можете использовать куки-сессию:

  • Cookie-Session не требует какой-либо базы данных/ресурсов на стороне сервера, хотя данные общего сеанса не могут превышать размер максимального файла cookie браузера.

  • Cookie-Session может упростить определенные сценарии сбалансированного нагрузки.

  • Сессия cookie можно использовать для хранения «легкого» сеанса и включения идентификатора для поиска вторичного хранилища, поддерживаемого базой данных, чтобы уменьшить поиск базы данных.

Но, как отмечалось выше, я обычно использую сеанс.

** cookie-parser – Этот модуль не нужен, если вы используете модуль промежуточного программного обеспечения сеанса.

Наконец, примечание на сжатие Модуль промежуточного программного обеспечения: На странице Express Middleware перечислены этот модуль в качестве опции для GZIP Compresson, но – очень похоже на обслуживание статических файлов – я предпочитаю делать это на уровне Proxy/Network, а не на уровне приложения (с помощью Nginx или HaProxy).

И если у вас есть сайт с высоким трафиком, выполнение сжатия на обратном прокси-слое является почти обязательным.

Завершая

Официальные экспресс -документы имеют много хорошей информации, особенно в таких вещах, как лучшие практики производства. Я призываю вас проверить их, если вы этого не сделали раньше! Они часто упускаются из виду.

Любите JavaScript, но все еще сбиты с толку архитектурными вещами и как вы должны структурировать свой сервис? Я публикую статьи о JavaScript и узле каждые 1-2 недели, поэтому, если вы хотите получать все новые статьи непосредственно в свой почтовый ящик, Вот эта ссылка снова подписаться на мою бюллетени!

Оригинал: “https://dev.to/ccleary00/express-approved-middlewares-to-use-in-your-api-2j8l”