http-fantasy-land
v3.0.0
Published
[![Build Status](https://travis-ci.org/spudly/http-fantasy-land.svg?branch=master)](https://travis-ci.org/spudly/http-fantasy-land) [![eh?](https://codecov.io/gh/spudly/http-fantasy-land/branch/master/graph/badge.svg)](https://codecov.io/gh/spudly/http-fa
Downloads
20
Readme
[WIP] http-fantasy-land
A web server library that allows you to create your server using functional concepts.
Getting Started
npm install --save http-fantasy-land
import {listen, get} from 'http-fantasy-land';
const home = (response, request) => ({
...response,
statusCode: 200,
body: 'It works!',
});
const router = composeRoutes(
get('/', home),
);
listen(router, {port: 8080}).then(stop => {
console.log('Listening @ http://localhost:8080');
});
API
route functions
A route is a function that, given a request object and a response object, returns a new response (or a promise that resolves to one).
[TODO: elaborate]
request
The request object is serialized, immutable representation of an http.IncomingMessage object.
{
method: String,
url: String,
headers: {
[key: String]: String,
},
}
response
The response object is a serialized, immutable representation of an http.ServerResponse object.
{
status: Number,
body: String|Stream,
headers: {
[key: String]: String,
},
}
listen
listen :: ((Object, Object) -> Object, Object) -> Promise<() -> void>
Description:
Creates and starts a http/https server using the supplied route and options. Returns a promise that resolves to a stop()
function.
Server Configuration Options. Accepts port, hostname, and backlog from http.listen, as well as any option accepted by https.createServer
See the links above for detailed descriptions of each option.
Return Value: Function - A function that stops the server.
listen(route, {port: 8080}).then(stop => {
console.log('Listening @ http://localhost:8080');
setTimeout(() => {
stop();
console.log('Server stopped!');
}, 500);
});
composeRoutes(...routes) => route
sendFile(file) => route
setHeader(name)(value) => route
get('/path', route) => route
head('/path', route) => route
post('/path', route) => route
put('/path', route) => route
del('/path', route) => route
connect('/path', route) => route
options('/path', route) => route
trace('/path', route) => route
patch('/path', route) => route
Compatibility
[TODO: document usage w/ express/connect/etc.]