@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

    Install

    npm i @nicolasparada/web-framework

    DownloadsWeekly Downloads

    4

    Version

    0.8.2

    License

    MIT

    Last publish

    Collaborators

    • nicolasparada