open-index/open-npm huggingface dataset:
npm package: @jkfe/request
Description: 基于axios二次封装请求工具函数，可注入API方法、METHOD方法，支持错误重连
Author: ZhangDong
Latest version: 1.0.4

# API请求工具函数
基于axios二次封装请求工具函数，可注入API方法、METHOD方法，支持错误重连

[详细api文档参考](docs/api.md)

### 使用
安装包，使用`ZYMreal NPM`安装
```
npm i @jkfe/request -S
```

引入
```javascript
import Request from '@jkfe/request'

const API = {
	TEST: 'POST:/api/test',
	LOGIN: 'POST:/api/login',
	INFO: 'GET:/api/info/{userId}'	// API中的{code}会被转换为提供的参数
}

const options = {
	// 注入API
	apis: API
}

// 在Vue中使用，实际上是调用Request.install方法
Vue.use(Request, options)
// 通过挂载位置获取实例化Request，默认挂载名为$api
const REQ = Vue.prototype.$api;

// 挂载在任意方法、对象下
// const REQ = Request.install(window, options)
```

发起请求
```javascript
REQ(API.TEST)
// 注入的API可以直接调用
REQ.INFO()
// 注入的METHOD方法可以直接调用
REQ.post(API.TEST)
```


也可以直接调用默认实例发起请求
```javascript
Request(API.TEST)
Request.post(API.TEST)
```

使用，在Vue组件中，直接使用`this.$api`调用
```javascript
let api = 'GET:/api/test'
let data = {
	name: 'zhangdong'
}

// 请求的选项为最优匹配，会覆盖axios默认选项
let opt = {
	timeout: 2000
}

// 发起请求
vm.$api(api, data, opt).then(res => {}).catch(err => {})

// 调用注入的API
vm.$api.TEST(data, opt).then(res => {}).catch(err => {})
// 调用注入的METHOD，会强制转换为POST请求
vm.$api.post(api, data, opt).then(res => {}).catch(err => {})
```

注入拦截器
```javascript
REQ
.intercept('request', config => {
	// 发起请求前拦截
	config.url = url.join(config.url, {
		_time: +new Date(),
		appId: window.appId
	})

	// 这里一定要return，否则会抛出错误
	return config
})
.intercept('response',
	res => {
		// 数据接收拦截，数据成功返回后且res.success==true走这里
		// somthing

		// 一定要return，否则业务中拿不到返回的数据
		return res
	},

	// 所有的错误都走这里，res.success==false也走这里
	err => {
		// somthing
		return Promise.reject(err)
	}
)
```

也可以为全局默认实例注入拦截器
> **注意：**默认实例注入后讲影响任何使用默认实例发起的请求
```javascript
Request.instance.interceptors.request.use(config => {
	return config
})
Request.instance.interceptors.response.use(
	res => {
		return res
	},
	err => {
		return Promise.reject(err)
	}
)
```

初始化默认选项`options`
```javascript
{
	namespace: '$api',
	methods: true,
	axios: {
		timeout     : 60000,    // 请求超时(毫秒)
		baseURL     : process.env.NODE_ENV === 'production' ? process.env.PUBLIC_PATH : process.env.BASE_PATH+'/api/',

		contentType : 'form',   // 支持别名设置：xml、form、json
		trim        : true,     // 是否剔除参数前后空格，支持Object、Array、String数据遍历剔除
		// 重试判断
		// Boolean，规则为res.code==30
		// Function(res){return res.code==30}，function必须返回true启用重试
		retry       : true,
		maxRetry    : 2,        // 最大重试次数

		headers: {
			'X-Requested-With': 'XMLHttpRequest'
		}
	}
}
```

> **注意：** 基于CAS规范，`response.result.code==30`的时候，认为是使用token重新登录，会重新发起一次请求，retyr为true时则启用该规则，也可以设置为`Function`自行验证
npm package: @jkfe/utils
Description: 工具库，集合项目中常用的工具函数
Author: ZhangDong
Latest version: 1.0.2

# 工具库
工具库，集合项目中常用的工具函数

### 测试
作为工具类库，所提供的函数应通过单元测试，每个工具函数必须写对应的测试文件。参考`test`目录下的文件。

运行测试
```
npm test
```

### 使用
安装包，使用`ZYMreal NPM`安装
```
npm i @jkfe/utils -S
```

全部引入
```javascript
import * as _ from '@jkfe/utils'
```

按需引入
```javascript
import prefix from '@jkfe/utils/src/prefix'
```

[api文档](docs/api.md)
[browser文档](docs/browser.md)