forked from fdnd-task/connect-your-tribe-squad-page
-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
104 lines (78 loc) · 3.53 KB
/
server.js
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
// 1. opzetten van de webserver
// Importeer het npm pakket express uit de node_modules map
import express from 'express'
// Importeer de zelfgemaakte functie fetchJson uit de ./helpers map
import fetchJson from './helpers/fetch-json.js'
// Stel het basis endpoint in
const apiUrl = 'https://fdnd.directus.app/items'
// Haal alle squads uit de WHOIS API op
const squadData = await fetchJson(apiUrl + '/squad')
const persoonlijkeData = await fetchJson('https://fdnd.directus.app/items/person/13')
console.log(persoonlijkeData)
// Maak een nieuwe express app aan
const app = express()
const messages = []
// 2. http requests
// Stel ejs in als template engine
app.set('view engine', 'ejs')
// Stel de map met ejs templates in
app.set('views', './views')
// Gebruik de map 'public' voor statische resources, zoals stylesheets, afbeeldingen en client-side JavaScript
app.use(express.urlencoded({ extended: true }));
app.use(express.static('public'))
// einde opzetten van server
// Maak een GET route voor de index
// vraagt iets op van de server wanneer localhost/
app.get('/', function (request, response) {
// Haal alle personen uit de WHOIS API op
// fect de json van de whoisapi
fetchJson(apiUrl + '/person/?filter={"squad_id":3}').then((apiData) => {
// apiData bevat gegevens van alle personen uit alle squads
// Je zou dat hier kunnen filteren, sorteren, of zelfs aanpassen, voordat je het doorgeeft aan de view
// zet de data en index in elkaar en geef deze door aan de browser
// Render index.ejs uit de views map en geef de opgehaalde data mee als variabele, genaamd persons
response.render('index', {persons: apiData.data, squads: squadData.data})
console.log(messages)
})
})
// Maak een POST route voor de index
app.post('/', function (request, response) {
// Er is nog geen afhandeling van POST, redirect naar GET op
// messages.push(request.body.bericht)
response.redirect(303, '/')
})
app.post('/person/:id', function (request, response) {
// Er is nog geen afhandeling van POST, redirect naar GET op
console.log(request)
// messages.push(request.body.bericht)
// messages.push(request.body.bericht)
response.redirect(303, '/')
})
// Maak een GET route voor een detailpagina met een request parameter id
app.get('/person/:id', function (request, response) {
// Gebruik de request parameter id en haal de juiste persoon uit de WHOIS API op
fetchJson(apiUrl + '/person/' + request.params.id).then((apiData) => {
// Render person.ejs uit de views map en geef de opgehaalde data mee als variable, genaamd person
response.render('person', {person: apiData.data, squads: squadData.data, messages: messages})
})
})
// 3. start de webserver
// Stel het poortnummer in waar express op moet gaan luisteren
app.set('port', process.env.PORT || 8000)
// Start express op, haal daarbij het zojuist ingestelde poortnummer op
app.listen(app.get('port'), function () {
// Toon een bericht in de console en geef het poortnummer door
console.log(`Application started on http://localhost:${app.get('port')}`)
})
// Custom routes
//game
// Custom routes
//game
app.get('/app', function(req, res) {
fetchJson(apiUrl + '/person?filter={"avatar":{"_nempty":""}}').then((apiData) => {
// apiData bevat gegevens van alle personen uit alle squads
// Je zou dat hier kunnen filteren, sorteren, of zelfs aanpassen, voordat je het doorgeeft aan de view
// Render index.ejs uit de views map en geef de opgehaalde data mee als variabele, genaamd persons
res.render('app', {persons: apiData.data, squads: squadData.data})
})
});