项目作者: Lighting-Jack

项目描述 :
用AOP的模式实现request,可以便捷地进行请求前置/后置处理
高级语言: TypeScript
项目地址: git://github.com/Lighting-Jack/request-provider.git
创建时间: 2018-12-12T08:57:01Z
项目社区:https://github.com/Lighting-Jack/request-provider

开源协议:MIT License

下载


Request Provider

GitHub license
NPM Version
NODE Version
CircleCI

AOP 编程思想为核心,提供函数使用的一种思路,将想要执行的函数看作是切入点,切入点前需要做的任务看作是前置任务,切入点后需要做的任务看作是后置任务。

中文版文档

Installation

  1. npm install request-provider -g

Examples

  1. import { TransactionImpl, wrappers } from '../src/index'
  2. import * as request from 'request-promise'
  3. const wrappers = {
  4. initial: [
  5. async ctx => {
  6. const options = ctx.arguments[0]
  7. options.url = 'http://www.baidu.com'
  8. console.log('rp-start', ctx.arguments[0])
  9. }
  10. ],
  11. close: [async ctx => console.log('rp-end', ctx.ret)]
  12. } as wrappers
  13. const requestAop = new TransactionImpl(wrappers)
  14. requestAop.performAsync(request, null, {
  15. url: '',
  16. method: 'get'
  17. })

这个例子展示了将 request 作为切入点,前置函数对 request 的入参进行了赋值操作,后置函数打印了 request 返回的内容。例子比较简单,但是结合具体的场景,可以实现很多非常便利的操作。

Wrapper

你需要自定义wrapper,wrapper 是包含下面两个属性的普通对象

属性 含义
initial 切入点的前置函数组
close 切入点的后置函数组

PerformSync & PerformAsync

TransactionImpl 的实例提供了 PerformSync 和 PerformAsync 两个公共 api,分别对应于同步和异步的处理场景。

入参 含义
method 将该函数视为切入点
scope 切入点所在的作用域
…arguments 切入点最多支持 6 个入参

Action Flow

actionFlow

Licence

MIT