A simple and minimal framework for creating http servers with multiple REST style endpoints.
npm install powernap.js
var PowerNap = require('powernap.js');
var server = new PowerNap(8080);
server.endpoint("get", '/api', function (request, response) {
response.end("Hello world");
});
server.staticEndpoint("/public", "./public");
Integer port
Creates a new http server at a given port with no bound endpoints.
var server = new PowerNap(80);
String method
String/RegExp regex
Function callback
Creates and attaches a new endpoint to the server with a given regular expression and method (e.g. "ALL" / "GET" / "POST" / "PUT" / "DELETE" / "HEAD").
Endpoints should be added in order from highest priority to lowest, as the first match will be the only one called.
Any value passed as the regex will be cast into a Regular Expression, this is the value used to match a request to an endpoint.
Callbacks will receive the following 2 arguments:
Object request {
String query // query string
String path // path
String ext // file extension
String filename // filename
String method // http method
Object request // original request object
}
Object response // original response object
Create an endpoint at /myRESTfulAPI
that returns the string "hello world"
.
var server = new PowerNap(80);
server.endpoint('GET', '/myRESTfulAPI', function (request, response) {
response.end("hello world");
});
String/RegExp regex
String root
Creates and attaches a new static endpoint to the server with a given regular expression and root directory.
By default requesting a directory will return a dynamically generated index page.
Serve the contents of the ./public
directory at the /
endpoint.
var server = new PowerNap(80);
server.staticEndpoint('/', './public');
Object request
Used internally to parse requests for url recognition logic, returns:
Object request {
String query // query string
String path // path
String ext // file extension
String filename // filename
String method // http method
Object request // original request object
}
var http = require('http');
http.createServer(function (request, reponse) {
var req = PowerNap.parseRequest(request);
}).listen(80);
Object request
Utility method for getting the body of a request, returns a promise that resolves into the body. Body size is capped at 1MB.
var server = new PowerNap(80);
server.endpoint('POST', '/uploadfile', function (request, response) {
var body = PowerNap.getBody(request.request);
body.then(function resolve(){
// do something with body
response.end("Success");
}, function reject() {
response.statusCode = 500;
response.end("Failed");
});
});