Menu
CoddyTech

Конфигурация

Часть раздела 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.

challenge icon

Задание

Легко

На хостинге порт выбирает хост и передаёт настройки вашему серверу через окружение. Считывайте настройки из окружения в одном месте и добавьте маршрут, который хост сможет вызвать, чтобы проверить, что сервер работает.

  1. В config.js считывайте port из переменной окружения PORT, а pageSize — из PAGE_SIZE. Обе переменные поступают в виде текста, поэтому преобразуйте их в числа. Если переменная отсутствует, оставьте сегодняшние значения: 3000 и 10.
  2. В server.js импортируйте config. Запустите сервер на config.port и выведите используемый порт. При PORT=8080 в консоли отображается в точности:
    Task tracker API on port 8080
  3. В routes/tasks.js тоже импортируйте config. В маршруте списка запрос без ?limit= использует config.pageSize вместо 10. Значение ?limit= в запросе по-прежнему имеет приоритет.
  4. В 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,
};
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела REST API

Потренируйтесь самостоятельно: Песочница Express