fh-webapp-alpha
v0.6.0
Published
FeedHenry REST API routes
Downloads
49
Keywords
Readme
fh-webapp is part one of a two-part replacement for fh-nodeapp. Webapp is the "'"hostapp" part of fh-nodeapp, that which makes public endpoints from exported functions in cloud/main.js. It also hosts some system-level piping to help the studio determine if an app is online, the endpoints it exposes), and introduces a new namespace - /mbaas.
#Usage Add the following to the 'dependencies' section of your 'cloud/package.json' file:
"fh-webapp" : "*",
"fh-api" : "*",
"express" : "3.3.4"
Add a file to your FeedHenry app 'cloud/application.js', with the following contents:
var webapp = require('fh-webapp');
var express = require('express');
$fh = require('fh-api');
var mainjs = require('main.js');
var app = express();
app.use('/sys', webapp.sys(mainjs));
app.use('/mbaas', webapp.mbaas);
app.use('/cloud', webapp.cloud(mainjs));
// You can define custom URL handlers here, like this one:
app.use('/', function(req, res){
res.end('Your Cloud App is Running');
});
module.exports = app.listen(process.env.FH_PORT || process.env.VCAP_APP_PORT || 8001);
##Customising & Extending The above application.js is just an Expressjs application - it's easily extensible. ###Custom APIs You can create custom API handlers in the Express format by doing:
app.use('/myapi', function(req, res){
res.end('My custom response');
});
###Serving Static Files Express has a built-in static file server. In this example, we host files under the public directory:
app.use(express.static(__dirname + '/public'));
#REST API
##Cloud
###(POST | GET | PUT) /cloud/:someFunction Authentication : Optional - can be enabled globally or on a per-endpoint basis under "Endpoints" section of the studio. Response formats : JSON, binary, plain text
###Headers x-fh-auth-app : API key of your application, found under the "details" section of the studio.
###Body: JSON format - paramaters to be passed to the exported function, see 'Writing API Functions'. ###Response: Result as passed to the callback function of the exported function - see 'Writing API Functions'.
###Writing API functions The cloud namespace exposes the public functions of a javascript file of your choice (traditionally 'main.js') as public endpoints under the cloud URL namespace. :someFunction is the name of a function attached to the 'exports' object. These functions take two paramaters - the first is the data sent in the POST, the second is the callback function to call.
exports.getConfig = function (params, callback){
// Do some work here, then return data
var err = false;
// Check if some error condition happened first
if (err){
return callback(err);
}
return callback(null, res);
}
##mBaaS ###POST /mbaas/db Authentication : Required - App API key goes here. Response format : JSON
###Headers x-fh-auth-app : API key of your application, found under the "details" section of the studio.
###POST Body: JSON body - same as $fh.db params. A summary of body options follows - For more, see $fh.db docs
{
"act": "create|update|list|delete|deleteall",
"type": "collectionName",
"guid": "GUID of object operating on - not required for list or deleteall",
"fields": "JSON definition of fields - required for create|update",
"eq|ne|in" : "JSON definition of query to match - supported for list only"
}
###Response: As per $fh.db
##Sys ##GET /sys/info/ping Authentication : None Response formats : Plaintext
###Headers None
###Response: "OK" if application is running as expected. Will respond with a 404 otherwise
##GET /sys/info/endpoints Authentication : None Response formats : JSON
###Headers None
###Response: { endpoints : ['array of endpoints exported as public functions'] }
##GET /sys/info/memory Authentication : None Response formats : JSON
###Headers None
###Response: { rss: 13721600, // Resident set size heapTotal: 7195904, // V8's total available memory heapUsed: 2369744 // V8's used memory }
##GET /sys/info/memory Authentication : None Response formats : Plaintext
###Headers None
###Response: 0.1.0