[[:oktatas:web:back-end_framework:express|< Express]] ====== Beállítások tárolása ====== * **Szerző:** Sallai András * Copyright (c) 2025, Sallai András * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]] * Web: https://szit.hu ===== Bevezetés ===== Az API alkalmazás beállításait tárolhatjuk .env vagy valamilyen JSON fájlban. A .env fájl helyet használhatunk más nevet is, de ez egy általánosan használt fájlnév. A JSON fájl valamilyen .json kiterjesztésű fájl: * config.json * default.json * default_config.json * config/default.json * stb. A .env fájlban szimpla változóként tartjuk nyilván a beállításokat, a JSON fájlokban értelemszerűen JSON formátumban. Mit tárolunk ilyen fájlokban? Az alkalmazáshoz tartozó portbeállítás, verziószám, adatbázis adatok stb. ===== Node.js projekt létrehozása ===== Hozzunk létre egy Node.js projektet: mkdir api cd api npm init -y ===== .env ===== Szükségünk van a **dotenv** csomagra a .env fájl tartalmának olvasásához. Telepítsük: npm install dotenv Készítsünk egy .env fájlt a projekt gyökérkönyvtárában, majd vegyünk fel benne néhány változót: NAME=Barbi CITY=Szeged APP_PORT=8000 import dotenv from 'dotenv' dotenv.config(); console.log(process.env.NAME); console.log(process.env.CITY); A config() függvény paraméterezhető is. Debug és útvonal beállítása: import dotenv from 'dotenv' dotenv.config({ debug: true, path: './config/.env' }); console.log(process.env.NAME); console.log(process.env.CITY); ===== config.json ===== A beállítások tárolhatók JSON fájlban is. A fájl neve tetszőleges. Lehet config vagy default, a kiterjesztést viszont célszerű .json-ra állítani. Egy példa a tartalomra: { "name": "Barbi", "city": "Szeged", "app": { "port": 3000 } } Használjuk a beállításokat: import { readFileSync } from 'fs' const fileUrl = new URL('config.json', import.meta.url) const config = JSON.parse(readFileSync(fileUrl, 'utf-8')) console.log(config.name) console.log(config.city) Az URL osztály kihagyható, ha config.json fájl egy könyvtárban van az index.js állománnyal. Itt azért alkalmaztuk, mert ez működik alkönyvtárak esetén is, például: * '../../config/default.json' Esetleg: import { readFile } from 'fs/promises' const fileUrl = new URL('config.json', import.meta.url) const config = JSON.parse(await readFile(fileUrl, 'utf-8')) console.log(config.name) console.log(config.city) console.log(config.app.port) ===== npm create sip ===== Ha a sip paranccsal készítjük el a projektet a beállítások alapértelmezetten egy JSON fájlban a következő helyen találhatók: * config/default.json Hozzunk létre kísérletként egy **alap** nevű projektet: npm create sip@latest A parancs rákérdez a projekt nevére, majd válasszuk a projekt típusának a **Express API** lehetőséget. Az elkészített default.json fájl tartalma: { "app": { "port": 8000, "key": "", "log": "console.log" }, "db": { "dialect": "sqlite", "host": "127.0.0.1", "name": "", "user": "", "pass": "", "path": ":memory:" } } A fájlt nyugodtan szerkeszthetjük. Az eredeti tartalmat megtaláljuk a **default.json.example** fájlban.