1.5.2 • Published 10 years ago

api-master v1.5.2

Weekly downloads
31
License
-
Repository
-
Last release
10 years ago

Uses schema for:

  • Validating API-methods parameter and result
  • Generating API documentation (Warning: not implemented yet)

Features

  • Schema: Joi (could be converted to JSON-Schema over joi-to-json-schema)
  • API-call parameter validation
  • API-call result validation
  • Errors:
    • All valid API errors extracted to one place
    • True type errors (inherits Error and ApiError)
    • Contains statusCode
    • Default error properties specification
    • Custom error parameters
  • api-master API:
    • Chaining for synchronous api.* methods
    • Potentially asynchronous api.call() returns promise

Installation

npm install api-master --save

Run tests

npm install -g gulp

cd node_modules/api-master/

gulp test

Usage example

See example sources in node_modules/api-master/test/readme/

node node_modules/api-master/test/readme/use.js

Define API Errors

api/errors.js

module.exports = function(api) {
    return api
        .errType(500, 'SuperBackendError', function(err, data) {
            err.message = 'Sorry guys but data is ' + data
        })
        .errType(500, 'PropsError', {message: 'msg', myInfo: 123})
        .errType(500, 'SimpleError', 'Just a message')
    // ...
}

Define API Methods (End-Points)

api/methods.js

var Joi = require('joi')

module.exports = function(api) {
    return api
        .method('checkData', {
            description: 'Checks given data', // Optional additional short description
            param: Joi.object().required().keys({
                data: Joi.bool().required().description('Data to check')
            }),
            result: Joi.string().required().description('Message about data'),
            impl: function(param, helper) {
                if(param.data == true) {
                    helper.resolve('Data is ok')
                } else {
                    helper.reject('SuperBackendError', param.data) // Uses defined error type
                }
            }
        })
    // ...
}

Use API

// Define API
var api = require('api-master').makeApi('Super Backend')

require('./api/methods')(api)
require('./api/errors')(api)

// Use API
var methodName = 'checkData'


function testCall(param) {
    var callData = {} // optional call data: req, res, session, user

    api.call(methodName, param, callData)
        .then(function(result) {
            console.log('Result:', result)
        })
        .catch(function(err) {
            console.log('Catched:', err.stack)
        })
        .done()
}

testCall({data: true}) // Data is ok

testCall({data: false}) // SuperBackendError: Sorry guys but data is false
1.5.2

10 years ago

1.5.1

10 years ago

1.5.0

10 years ago

1.4.0

10 years ago

1.3.2

10 years ago

1.3.1

10 years ago

1.3.0

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago