JavaScript Blog

Nagyon alap Node.Js route

2022. június 14. - Webdeveloper

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)

node_js-routing.png


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

 

A bejegyzés trackback címe:

https://jscript.blog.hu/api/trackback/id/tr1917858161

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása