1.0.22 • Published 9 years ago
apeman-api v1.0.22
apeman-api
Remote api call
Installation
Install apeman-api module via npm.
$ npm install apeman-api -gUsage
- 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-apiClient 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 serverProgrammatic API
apeman-api also provide programmatic API.
Firstly, install the module locally.
$ npm install apeman-api --save-devThen,
#!/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
1.0.22
9 years ago
1.0.21
9 years ago
1.0.20
9 years ago
1.0.19
9 years ago
1.0.18
9 years ago
1.0.17
10 years ago
1.0.16
10 years ago
1.0.15
10 years ago
1.0.14
10 years ago
1.0.13
10 years ago
1.0.12
10 years ago
1.0.11
10 years ago
1.0.10
10 years ago
1.0.9
10 years ago
1.0.8
10 years ago
1.0.7
10 years ago
1.0.6
10 years ago
1.0.5
10 years ago
1.0.4
10 years ago
1.0.3
10 years ago
1.0.2
10 years ago
1.0.1
10 years ago
1.0.0
10 years ago