Uczymy się parsować urle przychodzące do serwera node przez request. Do dzieła.

Na początek usuwanie niepotrzebnego znaku „/” na początku:

const http = require("http");

function removeSlashFromUrl(url){
    return url.startsWith("/") ? url.slice(1) : url;
}

const server = http.createServer(function(req, res) {
    
    res.writeHead(200, {"Content-Type": "text/html"});
    res.write(`<b>URL: ${removeSlashFromUrl(req.url)}</b></br>`);
    res.end();

});

server.listen(8000, function() {
    console.log("Serwer działa: http://localhost:8000");
});

//URL: blabla/bla?q=bla

W PHP użylibyśmy funkcji ltrim z parametrem znakowym, ale – niestety – JS to nie PHP.

Ok, teraz usuwanie queryStringa:

const http = require("http");

function removeSlashFromUrl(url){
    return url.startsWith("/") ? url.slice(1) : url;
}

function removeQueryString(url){
    url = removeSlashFromUrl(url);
    if(!url.includes("?"))
        return url;
    return url.slice(0, url.indexOf("?"));
}

const server = http.createServer(function(req, res) {
    
  
    res.writeHead(200, {"Content-Type": "text/html"});
    res.write(`<b>URL: ${removeSlashFromUrl(req.url)}</b></br>`);
    res.write(`<b>URL: ${removeQueryString(req.url)}</b></br>`);
    res.end();
});

server.listen(8000, function() {
    console.log("Serwer działa: http://localhost:8000");
});

//URL: blabla/bla?q=bla
//URL: blabla/bla

Teraz otrzymywanie queryStringa:

const http = require("http");

//(...)

function getQueryString(url){
    url = removeSlashFromUrl(url);
    if(!url.includes("?"))
        return "";
    return url.slice(url.indexOf("?")+1);
}

const server = http.createServer(function(req, res) {
    
  
    res.writeHead(200, {"Content-Type": "text/html"});
    res.write(`<b>URL: ${removeSlashFromUrl(req.url)}</b></br>`);
    res.write(`<b>URL: ${removeQueryString(req.url)}</b></br>`);
    res.write(`<b>URL: ${getQueryString(req.url)}</b></br>`);
    res.end();
});

server.listen(8000, function() {
    console.log("Serwer działa: http://localhost:8000");
});

//URL: blabla/bla?q=bla
//URL: blabla/bla
//URL: q=bla

Teraz funkcja do brania konkretnych paramsów z query stringa:

const http = require("http");

//(...)

function getParamFromQuery(url, param){
    let params = new URLSearchParams(getQueryString(url));
    return params.get(param);
}

const server = http.createServer(function(req, res) {
  
    res.writeHead(200, {"Content-Type": "text/html"});
    res.write(`<b>URL: ${removeSlashFromUrl(req.url)}</b></br>`);
    res.write(`<b>Param q: ${getParamFromQuery(req.url, "q")}</b></br>`);

    res.end();

});

server.listen(8000, function() {
    console.log("Serwer działa: http://localhost:8000");
});

//URL: blabla/bla?q=bla
//Param q: bla

Ok, tyle na razie wystarczy.