Time slots app prototype
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.1 KiB

import express from 'express'
import index from './app/index.html'
# A simple state that exists until the server stops
const state = {
count: 0,
}
# Using Imba with Express as the server is quick to set up:
const app = express()
const port = process.env.PORT or 3000
# Express works like usual, so we can allow JSON in the POST request:
const jsonBody = express.json({ limit: '1kb' })
app.post('/increment', jsonBody) do(req,res)
# A good exercise here is to add validation for the request body.
# For example, what would happen if you send a string instead of a number?
state.count += req.body.increment
# Sending the state back to the client lets us update it right away:
res.send({
count: state.count
})
app.get('/count') do(req,res)
res.send({
count: state.count
})
# catch-all route that returns our index.html
app.get(/.*/) do(req,res)
# only render the html for requests that prefer an html response
unless req.accepts(['image/*', 'html']) == 'html'
return res.sendStatus(404)
res.send(index.body)
# Express is set up and ready to go!
imba.serve(app.listen(port))