@nicolasparada/web-framework
v0.8.2
Published
HTTP Web Framework
Downloads
7
Maintainers
Readme
@nicolasparada/web-framework
Minimalistic Node.js HTTP Web Framework.
const framework = require('@nicolasparada/web-framework')
const app = framework()
const getNameMiddleware = (req, next) => next(req.params.name)
const hello = name => `Hello, ${name}!`
app.get('/hello/:name', getNameMiddleware, hello)
app.listen(80, '127.0.0.1', () => {
console.log('Server running at http://localhost/hello/world 🚀')
})
This framework sets trivials headers for you, so you can simply return any value, but if you want to respond with a custom status code or headers, make sure to return a object with a statusCode
number and a headers
plain object. body
can take any value.
app.get('/advanced', () => ({
statusCode: 418,
headers: {
foo: 'bar'
}
}))
You should have your tipical routing capabilities: get, post, put, patch, delete and options. It uses the path-to-regexp
engine to parse the pattern (same as express or react-router).
match
allows you to catch various HTTP verbs.
app.match(['PATCH', 'PUT'], '/pattern', updateHandler)
any
catches all HTTP verbs.
requestHandler
is useful if you want to use your own server. Just attach it to the request
event.
const fs = require('fs')
const https = require('https')
const framework = require('@nicolasparada/web-framework')
const app = framework()
const options = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem')
}
const server = https.createServer(options)
server.on('request', app.handleRequest)
server.listen(443, '127.0.0.1', () => {
console.log('Server running at 🔒 https://localhost/ 🚀')
})
listen
returns http.Server
.
You can register global middlewares passing them to the framework constructor.
const delay = ms => new Promise(resolve => {
setTimeout(resolve, ms)
})
const delayMiddleware = async (req, next) => {
const ms = parseInt(req.query.delay, 10)
await delay(ms)
return next(req)
}
const app = framework([delayMiddleware])
Tip! You can add middlewares later in the pipeline thanks to async/await.
const afterMiddleware = async (req, next) => {
const res = await next(req)
// Do something here
return res
}