http-middleware-metalab
Minimalist, composable http middleware pack for [http]/[express]/[hapi].
Last updated 3 years ago by izaakschroeder .
CC0-1.0 · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install http-middleware-metalab 
SYNC missed versions from official npm registry.

http-middleware-metalab

Minimalist, composable http middleware pack for http/express/hapi.

build status coverage license version downloads

Packs

  • base - Some sensible defaults.
  • webpack - For serving assets from webpack-based projects.
  • react - Server-side rendering with react and redux.

Usage

Install http-middleware-metalab and add it to your package.json file:

npm install --save http-middleware-metalab

These middleware components are NOT the same as express middleware; they are conceptually designed in a manner more similar to redux stores. Every middleware is an object with properties corresponding to events on an http.Server object; e.g. request, error, upgrade, etc. Each middleware function takes an existing middleware object and composes it.

For example, adding a req.message field:

function addMessage(message) {
  // Take in the existing middleware here
  return (middleware) => {
    const { request } = middleware;
    // Return a new middleware here.
    return {
      ...middleware,
      request(req, res) {
        req.message = message;
        // Composition!
        request(req, res);
      },
    };
  };
}

// Create the composed middleware.
const app = addMessage('hello')({
  // Your "base" middleware.
  request(req, res) {
    res.statusCode = 200;
    res.end(`Message: ${req.message}`);
  }
});

// Create the server and use the appropriate methods on the middleware object.
const server = http.createServer();
server.on('request', app.request);
server.listen();

In that sense http middleware is even less opinionated than express middleware. It is merely a composition mechanism for a previously non-composable set of functions (http server events).

With http

import http from 'http';
import connect from 'http-middleware-metalab/adapter/http';
import base from 'http-middleware-metalab/base';

const server = http.createServer();
const createApp = base();
const app = createApp({
  request(req, res) {
    res.statusCode = 200;
    res.end(`Hello ${req.id}`);
  },
  error(err) {
    console.log('GOT ERROR', err);
  },
});

connect(app, server).listen(8080);

With express

import express from 'express';
import connector from 'http-middleware-metalab/adapter/express';
import base from 'http-middleware-metalab/base';

const createMiddleware = base();
const app = express();

app.use(connector(createMiddleware));
app.listen(8080);

With hapi

import { Server } from 'hapi';
import connector from 'http-middleware-metalab/adapter/hapi';
import base from 'http-middleware-metalab/base';

const createMiddleware = base();
const server = new Server();

server.connection({ port: 8080 });
server.ext(connector(createMiddleware));
server.start();

Current Tags

  • 0.3.3                                ...           latest (3 years ago)

15 Versions

  • 0.3.3                                ...           3 years ago
  • 0.3.2                                ...           3 years ago
  • 0.3.1                                ...           4 years ago
  • 0.2.6                                ...           4 years ago
  • 0.3.0                                ...           4 years ago
  • 0.2.5                                ...           4 years ago
  • 0.2.4                                ...           4 years ago
  • 0.2.3                                ...           4 years ago
  • 0.2.2                                ...           4 years ago
  • 0.2.1                                ...           4 years ago
  • 0.2.0 [deprecated]           ...           4 years ago
  • 0.1.3                                ...           4 years ago
  • 0.1.2                                ...           4 years ago
  • 0.1.1                                ...           4 years ago
  • 0.1.0                                ...           4 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (16)
Dev Dependencies (19)
Dependents (1)

Copyright 2014 - 2016 © taobao.org |