-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathserver.js
More file actions
143 lines (96 loc) · 2.87 KB
/
Copy pathserver.js
File metadata and controls
143 lines (96 loc) · 2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
const cookieParser = require('cookie-parser');
const express = require('express');
const app = express();
const HTTP_PORT = process.env.PORT || 8080;
app.locals.title = 'My App'; // set the "title" property (accessible in our templates)
// cookie parsing middleware (3rd party middleware)
app.use(cookieParser());
// Application Level Middleware
app.use((req, res, next) => {
console.log(`Request from: ${req.get('user-agent')} [${new Date()}]`);
next();
});
// Custom 'Random Deny' Middleware
function randomDeny(req, res, next) {
let allowed = Math.floor(Math.random() * 2); // 0 or 1
if (allowed) {
next();
} else {
res.status(403).send('Access Denied');
}
}
// welcome route "/"
app.get('/', (req, res) => {
res.send('Hello World - please check the server.js code for which routes to test');
});
// Match All HTTP Verbs
app.all('/http-testing', (req, res) => {
res.send('test complete');
});
// HTTP Verb Methods
app.get('/get-test', (req, res) => {
res.send('GET Test Complete');
});
app.put('/put-test', (req, res) => {
res.send('PUT Test Complete');
});
app.post('/post-test', (req, res) => {
res.send('POST Test Complete');
});
app.delete('/delete-test', (req, res) => {
res.send('DELETE Test Complete');
});
// Route parameters
app.get('/employee/:employeeNum', (req, res) => {
res.send(`Employee Number: ${req.params.employeeNum}`);
});
// Query Parameters
app.get('/products', (req, res) => {
let result = 'all Products';
// NOTE: query parameter values are always strings
if (req.query.onSale == 'true') {
result += ' (on sale)';
}
res.send(result);
});
// Get a specific Header
app.get('/hello', (req, res) => {
res.send(`Hello ${req.get('user-agent')}`);
});
// Send a Cookie
app.get('/cookie-test', (req, res) => {
res.cookie('message', 'Hello World!');
res.send('Cookie Sent!');
});
// Read the cookie (using the cookie-parsing middleware)
app.get('/read-cookies', (req, res) => {
res.send(req.cookies);
});
// Redirect the client
app.get('/to-google', (req, res) => {
res.redirect('https://www.google.ca/');
});
// Status / res.end() - set status without sending any content
app.get("/status-test", (req,res)=>{
res.status(418).end();
});
// Custom Middleware (randomDeny) test
app.get('/secure', randomDeny, (req, res) => {
res.send('Welcome!');
});
// Trigger an error for the error handling middleware
app.get('/error-test', (req, res) => {
throw new Error('Error Test');
});
// Trigger for a 404 error (ie: redirect to unknown route)
app.get("/unknown", (req,res)=>{
res.redirect("/abcdefghijk");
});
// Error handling middleware
app.use((err, req, res, next) => {
res.status(500).send(`500 - ${err.message}`);
});
app.use((req, res, next) => {
res.status(404).send("404 - We're unable to find what you're looking for.");
});
app.listen(HTTP_PORT, () => console.log(`server listening on: ${HTTP_PORT}`));