http-app-router
v3.1.0
Published
Request router for building HTTP proxy servers
Downloads
51
Readme
http-app-router
Request router for building HTTP proxy servers
http-app-router is a Node HTTP router designed for serving multiple HTML applications on the same domain. HTML applications might include:
- A single page JavaScript web app
- A CMS-powered blog
- Static HTML content
If it speaks HTTP and sends HTML, it's an HTML app. Apps are defined with a server host
and a list of routes
that should match to that app. The router will make a request to your app and stream the response down to the client.
Install
$ npm install --save http-app-router
Usage
Pass an array of apps
to the Router
contructor to create a router handler. Use that handler to route requests and send a response if an app matches the request. Handlers are req, res, callback
functions that you can use with plain http.Server
instances or connect/express apps.
The router will always send a response when fetching the app is successful and will never send an error response. That's up to you.
var Router = require('http-app-router')
var http = require('http')
var router = Router([
{
name: 'github',
host: 'github.com',
routes: [
'/bendrucker'
]
},
{
name: 'local',
host: 'localhost',
routes: '*'
}
])
var server = http.createServer(function (req, res) {
router(req, res, function (err) {
if (err) res.end('oh no, an error!')
})
})
API
Router(apps)
-> function
Returns a router
function.
app
Required
Type: array[object]
An array of app objects, containing:
name
Required
Type: string
An application name.
host
Required
Type: string
The application host.
insecure
Type: boolean
Default: false
Toggles the app to be fetched over plain HTTP instead of HTTPS.
prefix
Type: string
Default: ''
A prefix that will be removed from the URL before being passed along.
headers
Type: object
Optional headers to set on requests.
cookies
Type: array[string]
A whitelist of cookie names that can be sent by a client or set by an app.
transforms
Type: array[string]
An array of transform
function keys that receive the app
as an argument and return a Transform
stream. The transform stream will receive and output HTML.
Built in:
Or add custom things, maybe minification or something equally practical:
var transforms = require('http-app-router/transforms')
var through = require('through2')
tranforms.uppercase = function (app) {
return through(function (chunk, enc, callback) {
callback(null, chunk.toString().toUpperCase())
})
}
router.onLog(listener)
-> function
Listens on log output from the router.
listener
Required
Type: function
Arguments: {level, message}
License
MIT © Ben Drucker