0.0.12 • Published 2 months ago

http-mw v0.0.12

Weekly downloads
-
License
ISC
Repository
-
Last release
2 months ago

http-mw

Bare minimum middleware for node's built-in http server module

Features

  • Parses incoming form data on each POST request, supports modern payload types.
  • Parses query parameters if exists
  • Accepts multiple file uploads.
  • Built-in static web server.
  • Basic http security, filters out the abusive clients.
  • Session support, assigns a persistent id to every client.
  • Automatic mime type detection.
  • CORS friendly.

Installation

$ npm i http-mw

Usage

const server = require("http-mw");

server.listen({
    "port": 8080,
    "webroot": "./public",
    "uploads": "./files"
}, function (req) {
    switch (req.method) {
        case "get":
            switch (req.path[0]) {
                // api endpoint
                case "info":
                    req.send({
                        "ip": req.ip,
                        "sid": req.sid,
                        "params": req.params,
                        "cookies": req.cookies
                    });
                    break;
                    // string type detection test
                case "test":
                    req.send('<html><body><h1>It Works!</h1></body></html>');
                    break;
                    // redirect test
                case "redirect":
                    req.redirect("http://google.com/");
                    break;
                    // respond with error
                case "error":
                    req.deny("You don't have access to this resource", 401);
                    break;
                default:
                    // serve static files from webroot dir
                    req.static();
            }
            break;
        case "post":
        switch (req.path[0]) {
            case "info":
                req.send({
                    "ip": req.ip,
                    "sid": req.sid,
                    "payload": req.payload,
                    "files": req.files
                });
                break;
            default:
                req.deny("undefined endpoint", 404);
        }
    }
}, function (conf) {
    console.log("-- server running on port " + conf.port);
    console.log("-- middleware test url: http://localhost:" + conf.port + "/info");
});

Documentation

Not available yet