circle
Minimalistic NodeJS API Server.
Install
$ npm install circle
Usage
Defining A Simple Server
circle = require('circle')
api = circle({
'/person/:name/:surname': person,
'/company/:id': company,
'/': home
})
api.start(8080, 'localhost')
Routing
Accepting requests to URLs like /person/john/smith?email=john@smith.com
function person (reply, match) {
reply(undefined, { name: match.params.name, surname: match.params.surname, email: match.params.query.email })
}
This will output:
{
"ok": true,
"result": [
{
"name": "john",
"surname": "smith",
"email": "john@smith.com"
}
]
}
Producing errors:
function company (reply, match) {
reply({ not_implemented: true }) // returns error
}
It handles POST data and file uploads nicely:
function create (reply, match, post, files) {
match.params
files
reply (undefined, { created: true })
}
JSONP
Circle outputs the response in JSONP format for requests made by passing "callback" parameter.
Formatting Output For Specific "Accept" Types
Circle servers will output JSON by default. To format the output for specific "Accept" header:
api.format('/person/:name/:surname', 'text/plain', function (response) {
if (response.error) return 'Error: ' + response.error;
return 'Name: ' + response.result.name + ' Surname: ' + response.result.surname + ' E-Mail: ' + response.result.email;
});
Will output below for curl http://localhost:8080/person/john/smith?email=john@smith.com
:
Name: John
Surname: Smith
Email: john@smith.com