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.