README
apeman-api
Remote api call
Installation
Install apeman-api module via npm.
$ npm install apeman-api -g
Usage
- Prepare an Apemanfile.js at your project root.
- 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.