http-fantasy-land v3.0.0
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).
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.
</dd>
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);
});