apeman-api
Remote api call
Last updated a year ago by okunishinishi .
MIT · Repository · Bugs · Original npm · Tarball
$ cnpm install apeman-api 
SYNC missed versions from official npm registry.

apeman-api

Build Status Code Climate Code Coverage npm Version JS Standard

Remote api call

Installation

Install apeman-api module via npm.

$ npm install apeman-api -g

Usage

  1. Prepare an Apemanfile.js at your project root.
  2. Run the command via CLI.

Apemanfile.js

/** Example of Apemanfile.js */

'use strict'

const co = require('co')

module.exports = {
  $cwd: __dirname,
  $pkg: { /* ... */ },
  $proto: [ /* ... */ ],
  $api: {
    // Define APIs
    'sign': {
      signin (username, password) {
        return co(function * () { // Returns a promise
          /* ... */
          return { success: true }
        })
      },
      signout () {
        /* ... */
      }
    }
  }
}

Then, start the server with command

$ apeman-api

Client Script

#!/usr/bin/env

'use strict'

const apemanApiClient = require('apeman-api/client')
const co = require('co')

co(function * () {
  let api = apemanApiClient('http://localhost:3000')

  {
    // Access to sign api
    let sign = yield api.connect('sign')
    // Call defined method with promise interface.
    let { success } = yield sign.signin('my-account', 'a9!ladsf0')
    /* ... */
  }
}).catch((err) => console.error(err))

CLI Options
$ apeman-api -h

  Usage: apeman-api [options] 

  Remote api call

  Options:

    -h, --help                           output usage information
    -V, --version                        output the version number
    -p, --port <port>                    Port number
    -c, --configuration <configuration>  Pathname of Apemanfile

  Examples:

  $ apeman-api -p 3000   # Start apeman api server


Programmatic API

apeman-api also provide programmatic API.

Firstly, install the module locally.

$ npm install apeman-api --save-dev

Then,

#!/usr/bin/env

'use strict'

const apemanApi = require('apeman-demo-api')
const co = require('co')

co(function * () {
  yield apemanApi({})
}).catch((err) => console.error(err))

Programmatic Options
Key Description Default
port Port number
configuration Pathname of Apemanfile

Advanced Usage

This is a more advance example of apeman api.

Names starts with $ and @ has special meaning and not treated as api module.

Apemanfile.js

/** Example of Apemanfile.js */

'use strict'

const co = require('co')

module.exports = {
  $cwd: __dirname,
  $pkg: { /* ... */ },
  $proto: [ /* ... */ ],
  get $api () {
    const sign = require('apeman-api-sign')
    const session = require('apeman-api-middleware-session')
    const debug = require('debug')('my-project:api')
    const { db } = this.$ctx
    return {
      // Define APIs
      'sign': sign(),
      // Called before method invocation
      $before () {
        const s = this
        let { module, method, params } = s.state.invocation
        debug(`${module}.${method} with params: ${params}`)
      },
      // Called after method invocation
      $after () {
        let s = this
        let { module, method, returns } = s.state.invocation
        debug(`${module}.${method} with returns: ${returns}`)
      },
      // Koa middlewares
      $middlewares: [
        session(db.models.Session)
      ],
      // You can define custom scope with `@` prefix
      '@admin': {
        user: {
          destroy (id) { /* ... */ }
        }
      }
    }
  }
}

License

This software is released under the MIT License.

Links

Maintainers (1)
Downloads
Today 0
This Week 0
This Month 2
Last Day 0
Last Week 0
Last Month 0
Dependencies (9)
Dev Dependencies (13)
Dependents (1)

Copyright 2014 - 2017 © taobao.org |