<div> <h1>request</h1> <hr /> <p> 网络请求工具类,可以实现比较常见的一些请求操作。 </p> <h2>get</h2> <code>function get(url: string, options?: RequestOptions): Promise<Response></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<XMLHttpRequestEventTarget>) => 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<XMLHttpRequestEventTarget>) => any</h3> <p> 调用 upload 方法时在上传过程中触发的事件,返回进度参数 </p> <h3>return: Promise<Response></h3> <p> 返回一个结果为 Response 对象的 Promise </p> <h2>post</h2> <code>function post(url: string, data?: BodyInit | null, options?: RequestOptions): Promise<Response></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<Response></h3> <p> 返回一个结果为 Response 对象的 Promise </p> <h2>upload</h2> <code>upload(url: string, data: FormData, options?: RequestOptions): Promise<XMLHttpRequest></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<XMLHttpRequest></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>