特征
Promise- 基于 HTTP 请求器- HTTP 和 HTTPS 协议
- 自动处理 JSON 请求和答复
- 极轻重量 无依赖关系 678字节!
- 包括常见的HTTP动词的别名:
get, (中文(简体) ),post, (中文(简体) ),put, (中文(简体) ),patch,以及del
此外,本单元是:
- ES 模块数字 :
dist/httpie.mjs - 常见JS数字 :
dist/httpie.js
安装
$ npm install --save httpie
使用量
说明: 这个
async语法是用于演示目的的 – 您也可以在节点 6. x 环境中使用 promises!
import { get, post } from 'httpie';
try {
const { data } = await get('https://pokeapi.co/api/v2/pokemon/1');
// Demo: Endpoint will echo what we've sent
const res = await post('https://jsonplaceholder.typicode.com/posts', {
body: {
id: data.id,
name: data.name,
number: data.order,
moves: data.moves.slice(0, 6)
}
});
console.log(res.statusCode); //=> 201
console.log(res.data); //=> { id: 1, name: 'bulbasaur', number: 1, moves: [{...}, {...}] }
} catch (err) {
console.error('Error!', err.statusCode, err.message);
console.error('~> headers:', err.headers);
console.error('~> data:', err.data);
}
API 密码
发送( 方法、 url、 选择)
回返情况: Promise
任意 httpie.send 请求(及其别名)将永远返回一个应许.
如果反应是 statusCode 这是400 或 以上 、 此承诺将因格式化的错误而拒绝 。 请看 处理错误否则, " 承诺 " 将完全解决 ClientRequest 流线.
确定的答复将获得一个新的 data 将包含反应的全部有效载荷。 如果回复返回 JSON 内容,那么 httpie 会分析它和 res.data 值将是生成的 JSON 对象 !
方法
类型 : String
HTTP 方法名称 – 它必须是大写 !
url 密码
类型 : String 或者说 URL
若为 url 是字符串, 它自动被解析 url.parse() 变成物体.
选择. body
类型 : Mixed
默认 : undefined
请求的身体,可以是任何类型的!
没有Buffer 对象将被转换成 JSON 字符串, 并适合 Content-Type 头将相接.
此外, httpie 将 永远 设置值 Content-Length 头!
选择。标题
类型 : Object
默认 : {}
随您请求发送的自定义信头 .
选择. 方向
类型 : Boolean
默认 : true
是否应当自动跟踪重定向回复.
说明: 只有在3xx状态下才会发生 财务报告和审定财务报表 如果答复是
Location头曰.
选择. reviver
类型 : Function
默认 : undefined
直接传递给 JSON.parse,允许您在 httpie 请求解决.
说明: 这个会 仅限 运行,如果
httpie发现JSON在反应中!
选择. 超时
类型 : Integer
默认 : undefined
自动终止请求前的时间, 以毫秒计 .
当请求超过这一时限时, httpie 以 err<Error>,添加事实 err.timeout 数值.
重要内容: 节点和浏览器版本之间有轻微的行为差异!
在服务器上timeout价值 不传播 转到任何方向.
在浏览器中timeout价值 不会 重定向时重置 .
选择。带有证书
类型 : Boolean
默认 : false
跨场请求是否应当包括全权证书(如饼干).
此值直接传递到 XMLHttpRequest.withCredentials。 。 。 .
重要: 这是给 浏览器版本 仅此而已!
获取( url, 选项qq)
别名
send('GET', url, opts)。 。 。 .
帖子( url, 选项qq)
别名
send('POST', url, opts)。 。 。 .
put( url, 选项%%% )
别名
send('PUT', url, opts)。 。 。 .
补丁( url, 选项qq)
别名
send('PATCH', url, opts)。 。 。 .
del( url, 选项%%% )
别名
send('DELETE', url, opts)。 。 。 .
处理错误
所有答复 statusCode >= 400 会导致被拒绝 httpie 请求。 当发生这种情况时,一个错误实例格式化为完整信息 :
err.message– 说吧 –String- 与《联合国宪章》err.statusMessage· ;err.statusMessage– 说吧 –String- 反应是statusMessage数值;err.statusCode– 说吧 –Number- 反应是statusCode数值;err.headers– 说吧 –Object- 反应是headers对象;err.data– 说吧 –Mixed- 反应的有效载荷;
此外,因超时而出错将具有真实性 err.timeout 数值.
重要内容: 错误
data属性也可以被解析为 JSON 对象,根据响应头.
import { get } from 'httpie';
get('https://example.com/404').catch(err => {
console.error(`(${err.statusCode}) ${err.message}`)
console.error(err.headers['content-type']);
console.error(`~> ${err.data}`);
});
//=> "(404) Not Found"
//=> "text/html; charset=UTF-8"
//=> ~> <?xml version="1.0" encoding="iso-8859-1"?>\n<!DOCTYPE html ...</body>\n</html>
许可证
麻省理工学院 卢克·爱德华兹