// Express apps respond to HTTP requests via routing. // Boilerplate Express.const express = require('express'); const app = express(); app.listen(8000);
// app.all can handle all requests and next() will pass control // to the next handler.app.all('*', (req, res, next) => { console.log(`Handling ${req.path}`); next(); })
// This is a basic route.app.get('/get', (req, res) => { res.send('This is a basic route.'); });
// By default, Express sends replies with a 200 status code for "OK", // but you can send any status code and message.app.get('/getError', (req, res) => { res.statusMessage = 'This can be a custom message.'; res.status(500).send('This is an error!'); });
// This parameter will match a single digit.app.get('/get/:digit(\\d{1})', (req, res) => { let param = req.params.digit; res.send(`${param} is a single digit.`); })
// This parameter will match a multiple digits.app.get('/get/:digits(\\d+)', (req, res) => { let param = req.params.digits; res.send(`${param} is more than 1 digit.`); })
// This route can match multiple parameters.app.get('/get/:param1,:param2', (req, res) => { let {param1,param2} = req.params; res.send(`${param1} and ${param2} are 2 parameters.`); })
// This route will match with anything else.app.get('/get/:AnyParam', (req, res) => { let param = req.params.AnyParam; res.send(`The parameter is ${param}.`); })
// This route can process a form submission.app.post('/postForm', express.urlencoded({extended:false}), (req,res) => res.send(`You pressed ${req.body.button}`))
// This route can process JSON data.app.post('/postJSON', express.json(), (req,res) => console.log(`Got ${JSON.stringify(req.body)}`))
// This route will send JSON data.app.get('/getJSON', (req,res) => res.json({a:1, b:2, c:3}));
// This is the HTML with links to all of the above routes.app.get('/', (req, res) => { res.send(`<pre> <a href="/get">Make a basic GET request.</a><br /> <a href="/getError">Send an error.</a><br /> <a href="/get/1">/get/1</a><br /> <a href="/get/123">/get/123</a><br /> <a href="/get/abc,123">/get/abc,123</a><br /> <a href="/get/anything-else">/get/anything-else</a><br /> <form action="/postForm" method="post" style="border:1px solid red"> A simple form. <button name="button" value="yes" type="submit">Yes</button> <button name="button" value="no" type="submit">No</button> </form> <button type="button" onclick="javascript: fetch('/postJSON', {method:'POST', headers:{'Content-Type':'application/json'}, body:JSON.stringify({a:1,b:2})});">Post JSON</button> <a href="/getJSON">Get JSON.</a><br /> </pre>`); });
// https://sean.brunnock.com 1/2023