2.2.0 • Published 6 years ago

jm-ms v2.2.0

Weekly downloads
24
License
MIT
Repository
github
Last release
6 years ago

theme : "white"

jm-ms

micro service lib, light and fast

作者:鱼哥


features

  • 路由式编程模式 基于 jm-route

  • 支持多协议 http、ws

  • 支持服务器 server

  • 支持客户端 client

  • 支持代理转发 proxy


install

npm i jm-ms

use:

const MS = require('jm-ms')
const ms = new MS()

构造函数 MS

参数 opts

  • logging false 是否打印日志

  • benchmark false 是否计算耗时

  • disable_client false 禁用client模块

  • disable_server false 禁用server模块


路由器 router

负责管理路由 route

--

工序函数

  • 有且只有一个参数 opts (json 对象)

--

异常抛出

抛出异常需要按以下格式

const e = new Error('这里填错误信息')
e.code = 1000 // 错误编码,可选
e.status = 500 // 对应的标准 HTTP 错误状态码,可选
e.data = {
    err: 1000, // 错误编码
    msg: '这里填错误信息',
    status: 500, // 对应的标准 HTTP 错误状态码,可选
    data: {}, // 附加数据,可选
    ... // 其他自定义错误内容
}
throw e

--

异常抛出 jm-err

采用 jm-err 简化异常生成

const error = require('jm-err')
// jm-err 的 Err 中定义了常见错误
const doc = error.Err.FA_NOAUTH
throw error.err(doc)

// 也可以自定义 doc 对象
const doc1 = {
    status: 401,
    err: 401,
    msg: 'Unauthorized'
}
throw error.err(doc1)

--

创建 router

const router = ms.router()

--

添加路由 router.add

--

简便写法

router.add('/', 'get', fn1, fn2)

--

添加路由 router.use

  • use({uri:uri, fn:fn})
  • use({uri:uri, fn:fn1, fn2, ..., fnn})
  • use({uri:uri, fn:router})
  • use({uri:uri, fn:obj}) obj必须实现了request或者execute之一

--

简便写法

router.use(fn1, fn2)

--

清除路由 router.clear

router.clear()

--

请求 router.request

router.request({
    uri:'/', // 请求 uri
    type:'get', // 请求类型
    headers:{}, // 请求头
    data:{}, // 请求数据
    params:{}, // 请求参数 
    timeout: 0, // 请求超时时间,单位ms
    ...
})

--

简便写法

  • request(uri, type, data, opts)
  • request(uri, type, data)
  • request(uri, type)
  • request(uri)
let doc = await router.request('/', 'get', {id: 1})

--

简便写法

  • post(uri, data, opts)
  • put(uri, data, opts)
  • get(uri, data)
  • delete(uri)
let doc = await router.get('/')

--

完整例子

const MS = require('jm-ms')
const ms = new MS()
let router = ms.router()
router.add('/', 'get', opts => { return opts})
let doc = await router.get('/')

服务器 server

const MS = require('jm-ms')
const ms = new MS()
let router = ms.router()
router.add('/', 'get', opts => { return opts})

// http 服务器
await ms.server(router, {type: 'http', port: 3000})

// websocket 服务器
await ms.server(router, {type: 'ws', port: 3001})

客户端 client

const MS = require('jm-ms')
const ms = new MS()

// http
let client = await ms.client('http://api.test.jamma.cn')
let doc = await client.get('/')
doc = await client.post('/users', {name: '鱼哥'})
// ws
let client = await ms.client('ws://api.test.jamma.cn')
let doc = await client.get('/')
doc = await client.post('/users', {name: '鱼哥'})
2.2.0

6 years ago

2.2.0-beta.1

6 years ago

3.0.0-beta

6 years ago

2.2.0-beta

6 years ago

2.1.1

8 years ago

2.1.0

8 years ago

2.0.3

8 years ago

2.0.2

8 years ago

2.0.1

8 years ago

2.0.0

8 years ago

1.1.1

8 years ago

1.1.0

8 years ago

1.0.2

8 years ago

1.0.1

9 years ago

1.0.0

9 years ago

0.0.19

9 years ago

0.0.18

9 years ago

0.0.17

9 years ago

0.0.16

9 years ago

0.0.15

9 years ago

0.0.14

10 years ago

0.0.13

10 years ago

0.0.12

10 years ago

0.0.11

10 years ago

0.0.10

10 years ago

0.0.9

10 years ago

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago