A Node.Js-ben a request.url-ből lehet kiolvasni az elérési útvonalat (továbbiakban PATH), azaz az adott Node-Server host címe után lévő részt. (Igaz a query string is idekerül, de ezt most nem részletezem)
A request.url a host főoldalon a "/" értéket adja vissza, más oldalakon pedig amit a hostnév után beírtunk. Például a www.example.com/about oldalon a '/about' értéket. Egy objektum kulcsaiba téve ezeket, értékeket rendelhetünk mellé, ezáltal könnyen testreszabhatjuk, hogy mit jelenítsünk meg az adott PATH-ra történő navigáláskor.
const router = {
"/": "HELLÓ ITT",
"/amott": "HELLÓ AMOTT",
"/emitt": "ÜDV EMITT",
"/emitt/amott": "ÜDV EMITT AMOTT"
};
Az objektum kulcsai a PATH, az objektum kulcsainak értéke, pedig amit megszeretnénk jeleníteni. Ez lehet egy függvény visszatérési értéke, ami egy string vagy maga a string. Itt ebben a nagyon alap ismertető posztban ez utóbbit mutatom meg.
A fenti példán látható, hogy melyik PATH-ra, melyik stringet akarom megkapni. A router handler függvény (az én példámban ez a main nevet viseli) a router[request.url] -ből az adott PATH-hoz tartozó értéket fogja visszaadni a router objektumból. Ezt betehető a request.write metódusába, így a Node a PATH-hoz hozzárendelt érteket fogja kiírni.
function main(req, res) {
const content = router[req.url] ? router[req.url] : "PAGE NOT FOUND";
res.setHeader("Content-Type", "text/html; charset=utf-8");
res.write(content);
res.end();
}
A példában a requestet req-nek, a response-t res-nek rövidítettem, mint ahogy a Node.JS-ben ezt általában szokták csinálni. De a lényege ugyan az. Ez esetben req.url -t kell használnunk az értékek megkapásához
A szerverkód egyben:
const http = require("http");
const app = http.createServer(main);
app.listen(8080);
const router = {
"/": "HELLÓ ITT",
"/amott": "HELLÓ AMOTT",
"/emitt": "ÜDV EMITT",
"/emitt/amott": "ÜDV EMITT AMOTT"
};
function main(req, res) {
const content = router[req.url] ? router[req.url] : "PAGE NOT FOUND";
res.setHeader("Content-Type", "text/html; charset=utf-8");
res.write(content);
res.end();
}
Ezen a kis demó-n tesztelheted:
https://ypk9mz.sse.codesandbox.io/
https://ypk9mz.sse.codesandbox.io/amott
https://ypk9mz.sse.codesandbox.io/emitt
https://ypk9mz.sse.codesandbox.io/emitt/amott
Ha olyan PATH-ot adunk meg, ami nem létezik, akkor a "PAGE NOT FOUND" string kerül kiírásra.
Itt még meg kellene oldani, hogy a status code is 404 (Page not found) legyen, de azt majd egy másik postban külön részletezem.
Ha kérdésed van ezzel kapcsolatban, nyugodtan írj kommentet vagy gyere a Discordra