# alipay-mini-program-request-options
> [网络请求]()基于[支付宝小程序网络请求Api](https://docs.alipay.com/mini/api/owycmh)的二次封装
<br>
> [文件上传]()基于[支付宝小程序文件上传Api](https://docs.alipay.com/mini/api/kmq4hc)的二次封装
<br>

## NPM
[
![NPM version](https://img.shields.io/npm/v/alipay-mini-program-request-options.svg)
![NPM download](https://img.shields.io/npm/dm/alipay-mini-program-request-options.svg)
![NPM download](https://img.shields.io/npm/dw/alipay-mini-program-request-options.svg)
](https://www.npmjs.com/package/alipay-mini-program-request-options)

## Usage
### Http-Request 网络请求
```js
const { Methods, Options } = require("alipay-mini-program-request-options");
// 目前支付宝仅支持以下4种请求方式
const { GET, POST, PUT, DELETE } = Methods;

new Options(`请求URL`)
  .setUrl(`更换请求URL`)
  .setMethod(POST)
  .setHeaders({
    'content-type': 'application/json;charset=UTF-8'
  })
  .setTimeout(60000)
  .setData({
    keyword: 'test'
  })
  .request(function () {
    console.log('completed')
  })
  .then(res => {
    console.log(res);
  })
  .catch(err => {
    console.error(err);
  });
```

#### Constructor-Options 构造函数入参
|Name|Type|Require|Default Value|
| ------ | ------ | ------ | --- |
| url | String | false | undefined |

#### Methods 可用Api
|Name|Param name array|Param type array|Return|
| ------ | ------ | ------ | --- |
| setUrl | [url] | [String] | this |
| setMethod | [method] | [String] | this |
| setHeaders | [headers] | [Object] | this |
| setTimeout | [timeout] | [Integer] | this |
| setData | [data] | [Object] | this |
| request | [completeCallback] | [Function] | Promise |

### File-Upload 文件上传
```js
const { FileTypes, UploadOptions } = require("alipay-mini-program-request-options");
// 目前支付宝只支持图片、视频、音频3种文件类型
const { IMAGE, VIDEO, AUDIO } = FileTypes;

new UploadOptions(`请求URL`)
  .setUrl(`更换请求URL`)
  .setHeaders({})
  // 添加上传文件
  .setFile(`文件路径`, `文件名`, IMAGE)
  // 单独设置文件路径
  .setFilePath(`文件路径`)
  // 单独设置文件名
  .setFileName(`文件名`)
  // 单独设置文件类型
  .setFileType(IMAGE)
  // 设置FormData
  .setFormData({})
  .upload(function () {
    console.log('completed')
  })
  .then(res => {
    console.log(res);
  })
  .catch(err => {
    console.error(err);
  });
```

#### Constructor-Options 构造函数入参
|Name|Type|Require|Default Value|
| ------ | ------ | ------ | --- |
| url | String | false | undefined |

#### Methods 可用Api
|Name|Param name array|Param type array|Return|
| ------ | ------ | ------ | --- |
| setUrl | [url] | [String] | this |
| setHeaders | [headers] | [Object] | this |
| setFile | [filePath, fileName, fileType] | [String, String, String] | this |
| setFilePath | [filePath] | [String] | this |
| setFileName | [fileName] | [String] | this |
| setFileType | [fileType] | [String] | this |
| setFormData | [formData] | [Object] | this |
| upload | [completeCallback] | [Function] | Promise |
