<div>
    <h1>request</h1>
    <hr />
    <p>
        网络请求工具类,可以实现比较常见的一些请求操作。
    </p>
    <h2>get</h2>
    <code>function get(url: string, options?: RequestOptions): Promise&lt;Response&gt;</code>
    <h3>url: string</h3>
    <p>
        url 地址
    </p>
    <h3>options?: RequestOptions</h3>
    <p>
        请求的配置参数,结构为
    <pre>interface RequestOptions {
    method?: string;
    accept?: string;
    contentType?: string;
    customerHeaders?: { [key: string]: string };
    signal?: AbortSignal | null;
    progress?: (this: XMLHttpRequestUpload, ev: ProgressEvent&lt;XMLHttpRequestEventTarget&gt;) => any
}</pre>
    </p>
    <h3>method?: string</h3>
    <p>
        请求类型,默认为 GET 或 POST
    </p>
    <h3>accept?: string</h3>
    <p>
        Accept 请求头的值
    </p>
    <h3>contentType?: string</h3>
    <p>
        Content-Type 请求头的值
    </p>
    <h3>customerHeaders?: { [key: string]: string }</h3>
    <p>
        自定义请求头,例如
    <pre>{
    'X-Auth-Id': 'xxxxxx',
    'X-Auth-Token': 'xxxxxx'
}</pre>
    </p>
    <h3>signal?: AbortSignal | null</h3>
    <p>
        终止器的信号,用来控制终止请求任务
    </p>
    <h3>progress?: (this: XMLHttpRequestUpload, ev: ProgressEvent&lt;XMLHttpRequestEventTarget&gt;) => any</h3>
    <p>
        调用 upload 方法时在上传过程中触发的事件,返回进度参数
    </p>
    <h3>return: Promise&lt;Response&gt;</h3>
    <p>
        返回一个结果为 Response 对象的 Promise
    </p>
    <h2>post</h2>
    <code>function post(url: string, data?: BodyInit | null, options?: RequestOptions): Promise&lt;Response&gt;</code>
    <h3>url: string</h3>
    <p>
        url 地址
    </p>
    <h3>data?: BodyInit | null</h3>
    <p>
        post 请求传递的请求正文,可以是 FormData 或者任意对象,后者会经 JSON 序列化后发送
    </p>
    <h3>options?: RequestOptions</h3>
    <p>
        请求的配置参数,结构如上述 get
    </p>
    <h3>return: Promise&lt;Response&gt;</h3>
    <p>
        返回一个结果为 Response 对象的 Promise
    </p>
    <h2>upload</h2>
    <code>upload(url: string, data: FormData, options?: RequestOptions): Promise&lt;XMLHttpRequest&gt;</code>
    <h3>url: string</h3>
    <p>
        url 地址
    </p>
    <h3>data: FormData</h3>
    <p>
        upload 请求传递的请求正文,仅支持 FormData
    </p>
    <h3>options?: RequestOptions</h3>
    <p>
        请求的配置参数,结构如上述 get,仅使用其中 <code>progress</code> 与 <code>customerHeaders</code>
    </p>
    <h3>return: Promise&lt;XMLHttpRequest&gt;</h3>
    <p>
        返回一个结果为 XMLHttpRequest 对象的 Promise
    </p>
    <hr />
    <h2>用法</h2>
    <pre>const request = window["lib-utility"];

request.get('https://www.baidu.com')
    .then(r => r.text())
    .then(text => console.log(text));

request.post('api/query', { id: 101 })
    .then(r => r.json())
    .then(result => console.log(result.data));

request.upload('api/upload', data, {
    progress: ev => {
        console.log(`loaded: ${ev.loaded}, total: ${ev.total}`);
    }
})
    .then(() => console.log('done.'));</pre>
</div>