You have no doubt noticed that urls do not always end with a filename, and when requested by the browser a page, a file is served anyway. The translation of the url into something that the server may respond with is called routing , pronounced so that you hear the word out in there. This process of transformation takes place in the server. The following example will show the basic steps in a relatively primitive fashion.
myg54/main.js
"use strict";
const routeMap = {
"/info": "<h1>Info Page</h1>",
"/contact": "<h1>Contact Us at:</h1>",
"/about": "<h1>Learn About Us</h1>",
"/hello": "<h1>Send Us an Email </h1>",
"/error": "<h1>The page you wanted doesn't exist</h1>"
};
const http = require("http");
const httpStatus = require("http-status-codes");
const hostname = "127.0.0.1";
const port = 3000;
const app = http.createServer(); // server as an obj
app.on("request", function (req, res) { // eventhandler for "request"
console.log("Log: Method: " + req.method);
console.log("Log: URL: " + req.url);
// prep response header
res.writeHead(httpStatus.OK, {
"Content-Type": "text/html; charset=utf-8"
});
let responseMsg;
if (routeMap[req.url]) { // look for route
responseMsg = routeMap[req.url]; // found, use it
} else {
responseMsg = "<h1>Find Wally!</h1>"; // else show something else
}
responseMsg += "<p><kbd>myg54</kbd> hid him</p>";
res.write(responseMsg); // respond
res.end(); // sends response http
});
app.listen(port, hostname, function () {
console.log(`Server running, and listening at http://${hostname}:${port}/`);
});
On your CLI do npm test to start the server.
Then go to your browser and test each of the following
urls.
Check the browser screen as well as the console log in each case.