Neutralize Pesky Miscreants

    api-master

    1.5.2 • Public • Published

    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

    Keywords

    none

    Install

    npm i api-master

    DownloadsWeekly Downloads

    12

    Version

    1.5.2

    License

    none

    Last publish

    Collaborators

    • nukisman