@nicolasparada/web-framework

0.8.2 • Public • Published

@nicolasparada/web-framework npm version dependencies

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
}

Middlewares

Package Sidebar

Install

npm i @nicolasparada/web-framework

Weekly Downloads

1

Version

0.8.2

License

MIT

Last publish

Collaborators

  • nicolasparada