https://www.npmjs.com/package/express

https://expressjs.com/en/guide/error-handling.html

// express -> npm package
// framework -> defined flow
// express manages everything from receiving request and giving back response

// Basic Express Application
// npm i express
const express = require('express') // import all express functions
const app - express() // instance of express object

// create route -> localhost:3000/
app.get('/', (req, res) => { // app.get(route, requestHandler)
	res.send('hello')
})
// localhost:3000/profile
app.get('/profile', (req, res) => { // app.get(route, requestHandler)
	res.send('hello profile')
})

app.listen(3000)

// changes to not update when reloading page
// server needs to be restarted -> use nodemon
// npm i nodemon -g
// (npx) nodemon script.js -> automatically restarts server

// middleware -> actions before reaching routes
// request -> middleware -> routes -> response
// ex. find user details from request and send to route
// placed before routes in code
app.use( function(req, res, next){ // run this before all requests
	console.log("middleware")
	next() // forward request
}) 
// error handling
app.get('/about', (req, res, next) {
	return next(new Error("something went wrong")) // error in console
})
app.use((err, req, res, next) => { // error handler
	console.error(err.stack)
	res.status(500).send('something went wrong') // error in frontend
})