gent-request
封装一个统一格式、便于使用的
http api
请求客户端类.
依赖环境
- ES6:Class、Promise
安装使用
安装:
npm i gent-request -S
node端使用:
const Request = ;
浏览器使用, 需要Promise ployfill:
;
初始化一个api实例
// node:const Request = ; const api = globalOptions;
promsie
对象
接口: 都返回api.get(url, opts={})
: get请求api.cacheGet(url, opts={})
: 带缓存的get请求,参数一样的请求会缓存,下一次直接返回api.json(url, data={}, opts={})
: 提交jsonapi.form(url, data={}, opts={})
: 提交form表单api.formData(url, data={}, opts={})
: 上传文件api.download(url, opts={})
: 下载(nodejs)api.downloadStream(url, opts={})
: 流式下载(nodejs)
options
初始化api时的全局设置:globalOptions
, 或者每个方法单独设置:opts
, opts
覆盖globalOptions
中相同的值。
可配置项如下:
// 接口基础地址 baseURL: '' // 返回数据格式:json, stream, other... responseType: 'json' // 超时时间 timeout: 10000 // method, `api.json, api.form, api.formData` 默认为post,其他默认get method: 'get' // url 参数 params: {} // headers headers: {} // timeout timeout: 1000 // 返回格式 responseType: 'json' // Basic auth // This will set an `Authorization` header, overwriting any existing // `Authorization` custom headers you have set using `headers`. auth: username: 'janedoe' password: 's00pers3cret' // 验证状态码,通过视为请求无异常 { return status >= 200 && status < 300; } // 请求发送前对配置进行修改,比如改headers等 { return opts; } // 数据正常时统一处理,可以返回一个 Promise.reject() 转为异常状态 { return data; } // 数据异常统一处理,可以返回一个 Promise.resolve() 转为正常状态 { return Promise; }
返回结果格式
api ; // result, error: // status code 状态码, 没有 response 时为 -1 status: 200 // 错误提示消息 message: 'OK' // 数据,只有 `resolve` 时存在 data: null // 头部信息, 有 `response` 是存在,否则为空对象 `{}` headers: {} // 错误详情, 只有 `reject` 时存在 error: // 标识各种错误类型,便于调试、定位错误 type: 'NO_RESPONSE' // 错误详情,用于服务端使用 `status code` 标识错误,同时用 `response body` 输出错误详情 info: code: 500 // 请求相关信息 info: baseURL: '' url: '' method: '' params: {} data: {} responseType: ''
上传文件formdata
浏览器端使用[FormData](https://developer.mozilla.org/zh-CN/docs/Web/API/FormData/Using_FormData_Objects)
api:
// JavaScript file-like 对象var content = '<a id="a"><b id="b">hey!</b></a>'; // 新文件的正文...var blob = content type: "text/xml"; // send with FormData instancevar formData = ; formData;formData; // 数字 123456 会被立即转换成字符串 "123456" // HTML 文件类型input,由用户选择formData;formData;api; // or send with objectapi;
node 端:
var formData = // Pass a simple key-value pair my_field: 'my_value' // Pass data via Buffers my_buffer: 1 2 3 // Pass data via Streams my_file: fs // Pass multiple values /w an Array attachments: fs fs custom_file: value: fs options: filename: 'topsecret.jpg' contentType: 'image/jpeg' ; // sendapi;
相关
- request.
- axios.
- got.
- node-fetch.