I strongly recommend learning javascript first. Here a series of post I did on Dev.to: https://dev.to/rickavmaniac/javascript-my-learning-journey-part-1-what-is-javascript-role-and-use-case-49a3
I am now ready to continue my Node.js learning journey :)
Click follow if you want to miss nothing. I will publish here on Dev.to what I learn everyday.
Without further ado here is a summary of my notes for my last day.
Create my first Web Server
// the http module have method to help create the server const http = require('http') // Create the server instance // req : incoming request // res : outgoing response const server = http.createServer((req, res) => { // send a response to client res.end('Hello World from the server') }) // start server listening for request server.listen(5000, 'localhost', () => { console.log('Server is listening at localhost on port 5000') })
Basic Routing
This server is great but currently he do not react to different url we could send from the browser. If we send for example http://localhost:5000/friends it show the exact same response as http://localhost:5000. Let implement that specific behaviour call routing.
With the server instance we just create, the req variable contain the incoming request informations.
This incoming request have a property call url that return current page path we currently visit.
For example if we visit the friends page at localhost:5000/friends the req.url property will return '/friends'.
If we visit the root path localhost:5000, the req.url will contain only empty '/'
Here a example very basic routing
const http = require('http') // Create the server instance // req : incoming request // res : outgoing response const server = http.createServer((req, res) => { const pathName = req.url if (pathName === '/friends') { res.end('This is my friends page') } else if (pathName === '/') { res.end('Hello World from the server root') } }) // start server listening for request server.listen(5000, 'localhost', () => { console.log('Server is listening at localhost on port 5000') })
Noted if you visit a page not include in the if/else routing the server will continue to loop indefinitely. So best thing to do is to add a else statement for all other non manage route.
if (pathName === '/friends') { res.end('This is my friends page') } else if (pathName === '/') { res.end('Hello World from the server root') } else { res.end('Page not found') }
To make that even more pro, we can add a 404 header to our response. Since we write a header we will also add a Content-type to 'text/html' that will allow us to use HTML in the response.
if (pathName === '/friends') { res.end('This is my friends page') } else if (pathName === '/') { res.end('Hello World from the server root') } else { res.writeHead(404, { 'Content-type': 'text/html' }) res.end('<h1>Page not found</h1>') }
Conclusion
That's it for today. Tomorrow will put all that learning to good use and will make our first API. Stay tune!
Follow me on Twitter: Follow @justericchapman
Top comments (1)
Neat post - I haven't considered doing direct routing before as I'm also learning Node. I just went straight for Express to help me out with the api writing.