Конфигурация
Часть раздела REST API путешествия по Node.js на Coddy. Урок 23 из 25.
На вашем ноутбуке сервер прослушивает порт 3000. Хостинг-сервис запускает его с помощью node server.js и сам выбирает порт, передавая его в окружение как PORT. Хост также время от времени вызывает маршрут вроде GET /health и перезапускает сервер, когда тот перестаёт отвечать.
// MAX_UPLOAD_MB=5 node server.js
const maxUpload = Number(process.env.MAX_UPLOAD_MB ?? 2);
const shopName = process.env.SHOP_NAME ?? 'My Shop';Каждое значение в process.env — это строка, а '5' + 1 — это '51', поэтому преобразуйте числа с помощью Number. Читайте настройки в одном файле — config.js — и импортируйте их везде, чтобы больше нигде не обращаться к process.env.
Задание
ЛегкоНа хостинге порт выбирает хост и передаёт настройки вашему серверу через окружение. Считывайте настройки из окружения в одном месте и добавьте маршрут, который хост сможет вызвать, чтобы проверить, что сервер работает.
- В
config.jsсчитывайтеportиз переменной окруженияPORT, аpageSize— изPAGE_SIZE. Обе переменные поступают в виде текста, поэтому преобразуйте их в числа. Если переменная отсутствует, оставьте сегодняшние значения: 3000 и 10. - В
server.jsимпортируйтеconfig. Запустите сервер наconfig.portи выведите используемый порт. ПриPORT=8080в консоли отображается в точности:Task tracker API on port 8080 - В
routes/tasks.jsтоже импортируйтеconfig. В маршруте списка запрос без?limit=используетconfig.pageSizeвместо 10. Значение?limit=в запросе по-прежнему имеет приоритет. - В
server.jsдобавьтеGET /healthвне маршрутизатора задач. Он возвращает статус 200 и в точности:{ "status": "ok" }
Этот урок выполняется с PORT=8080 и PAGE_SIZE=2.
Попробуйте: нажмите «Запустить», и в консоли появится Task tracker API on port 8080. GET /api/v1/tasks возвращает 2 задачи с "total": 3 и "pages": 2. GET /api/v1/tasks?limit=3 возвращает все 3 задачи. GET /health возвращает { "status": "ok" }.
Попробуйте сами
// Настройки, которые различаются на вашем ноутбуке и сервере.
// Считывайте каждую настройку из process.env, используя эти значения по умолчанию.
export const config = {
port: 3000,
pageSize: 10,
};
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела REST API
1Ресурсы и глаголы
Ресурсы и URLСоздание с помощью POST4Браузеры, версии и конфигурация
Что такое originРазрешение другого originCORSСтраница, вызывающая APIПотренируйтесь самостоятельно: Песочница Express