μ 请求 - 最小化的 HTTP 客户端
用于请求的轻量级替代品(和即时替代).
从零开始写.
超简单的使用
μ 请求被设计为用于请求的即时替代. 它支持HTTPS并默认跟随重定向.
npm install --save @coolaj86/urequest
var request = require('@coolaj86/urequest');
request('http://www.google.com', function (error, response, body) {
console.log('error:', error); // Print the error if one occurred
console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
console.log('body:', body); // Print the HTML for the Google homepage.
});
目录
表单
urequest 支持 application/x-www-form-urlencoded 财务报告和审定财务报表 multipart/form-data 窗体上传.
应用程序/x-www-form-urlencoded(URL-Encoded表格)
URL编码格式简单.
request.post('http://service.com/upload', {form:{key:'value'}})
// or
request.post({url:'http://service.com/upload', form: {key:'value'}}, function(err,httpResponse,body){ /* ... */ })
多段/窗体数据(多段窗体上传)
对于 multipart/form-data 我们使用 窗体数据 库 @ felixge (英语)。在大多数情况下,您可以通过 formData 选项.
用于 form-data,必须分别安装:
npm install --save form-data@2
var formData = {
// Pass a simple key-value pair
my_field: 'my_value',
// Pass data via Buffers
my_buffer: Buffer.from([1, 2, 3]),
// Pass data via Streams
my_file: fs.createReadStream(__dirname + '/unicycle.jpg'),
// Pass multiple values /w an Array
attachments: [
fs.createReadStream(__dirname + '/attachment1.jpg'),
fs.createReadStream(__dirname + '/attachment2.jpg')
],
// Pass optional meta-data with an 'options' object with style: {value: DATA, options: OPTIONS}
// Use case: for some types of streams, you'll need to provide "file"-related information manually.
// See the `form-data` README for more information about options: https://github.com/form-data/form-data
custom_file: {
value: fs.createReadStream('/dev/urandom'),
options: {
filename: 'topsecret.jpg',
contentType: 'image/jpeg'
}
}
};
request.post({url:'http://service.com/upload', formData: formData}, function optionalCallback(err, httpResponse, body) {
if (err) {
return console.error('upload failed:', err);
}
console.log('Upload successful! Server responded with:', body);
});
见 窗体数据 REDME 以获取更多信息和实例.
HTTP 认证
request.get('http://some.server.com/', {
'auth': {
'user': 'username',
'pass': 'password',
'sendImmediately': false
}
});
// or
request.get('http://some.server.com/', {
'auth': {
'bearer': 'bearerToken'
}
});
如果通过作为一个选择, auth 应为含有下列值的散列:
user||usernamepass||passwordbearer(可选)
注意您也可以使用 URL 本身指定基本认证, 如
详细内容见 RFC 1738 (英语)只要通过
user:password 位于主机前 @ 符号 :
var username = 'username',
password = 'password',
url = 'http://' + username + ':' + password + '@some.server.com';
request({url: url}, function (error, response, body) {
// Do more stuff with 'body' here
});
熊儿认证得到支持,并在 bearer 值为
可用。 数值可以是a String 或一个 Function 返回一个
String。如果
与 defaults 允许单个函数提供
在发送请求时的最后一个已知的符号,或者在苍蝇上计算一个.
自定义 HTTP 页眉
HTTP 密码 信头,例如 User-Agent,可以在 options 对象.
在下面的例子中,我们叫github API来找出数字
请求寄存器的恒星和分叉。 这需要
自定义 User-Agent 标题和https.
var request = require('request');
var options = {
url: 'https://api.github.com/repos/request/request',
headers: {
'User-Agent': 'request'
}
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
var info = JSON.parse(body);
console.log(info.stargazers_count + " Stars");
console.log(info.forks_count + " Forks");
}
}
request(options, callback);
UNIX 域袜
urequest 支持向 UNIX 域袜。要制作一个,请使用下列 URL 方案:
/* Pattern */ 'http://unix:SOCKET:PATH'
/* Example */ request.get('http://unix:/absolute/path/to/unix.socket:/request/path')
说明: SOCKET 路径被假定为绝对到主机文件系统的根.
请求( 选项, 回调)
第一个论点可以是: url 或一个 options 对象。 唯一需要的选择是 uri;所有其他都是可选的.
uri||url- 完全合格的uri或解析的url对象url.parse()method- http方法( 默认 ):"GET"(中文(简体) )headers- http页眉(默认:{}(中文(简体) )
body- PATCH、POST和PUT请求的实体机构。 一定是个Buffer, (中文(简体) ),String或者说ReadStream如果json实值true,则body必须是 JSON 的可串行对象.json- 套装body价值和增加值Content-type: application/json头曰. 此外,将反应机构描述为JSON.
followRedirect- 跟踪 HTTP 3xx 回复以重定向(默认 :true) (中文(简体) ). 此属性也可以作为函数执行response对象作为单一参数并应当返回true如果重定向应当继续,或false否则.followAllRedirects- 跟踪非 GET HTTP 3xx 响应作为方向调整(默认:false(中文(简体) )followOriginalHttpMethod- 默认我们改用HTTP方法 您可以让此属性重定向到 HTTP 原始方法( 默认 ):false(中文(简体) )maxRedirects- 要遵循的最大方向数( 默认值 :10(中文(简体) )removeRefererHeader- 当重定向发生时( 默认 :false) (中文(简体) ). 说明: 如果为真,则在重定向链中保留初始请求中设置的参考页眉.
encoding- 编码用于setEncoding反应数据。 若为null,则body返回为Buffer。其他任何东西 (包括undefined(中文(简体) ) 将会通过作为 编码 参数改为toString()(意思是这是有效的)utf8(默认情况下)说明: 如果您需要二进制数据, 请设定encoding: null. ) (中文(简体) )
方便方法
不同的HTTP方法OD和一些其他的便利也有简写方法.
请求. 默认(选项)
这种方法 返回折叠器 围绕默认的正常请求 API 无论你给它什么选择.
说明: request.defaults() 没有 修改全局请求 API;
相反,它 返回折叠器 用于默认设置.
说明: 你可以打电话 .defaults() 在从
request.defaults 以添加/覆盖先前默认的默认值.
例如:
//requests using baseRequest() will set the 'x-token' header
var baseRequest = request.defaults({
headers: {'x-token': 'my-token'}
})
//requests using specialRequest() will include the 'x-token' header set in
//baseRequest and will also include the 'special' header
var specialRequest = baseRequest.defaults({
headers: {special: 'special value'}
})
请求. METHOD( )
这些 HTTP 方法的便利功能就像 request() 但已经为您设定了默认方法 :
- 请求.get ()默认为
method: "GET"。 。 。 . - 页:1默认为
method: "POST"。 。 。 . - 请求.put()默认为
method: "PUT"。 。 。 . - 请求.patch( )默认为
method: "PATCH"。 。 。 . - request.del()/request.delete() 存档副本默认为
method: "DELETE"。 。 。 . - 请求。head( )默认为
method: "HEAD"。 。 。 . - 请求. 选项( )默认为
method: "OPTIONS"。 。 。 .
调试
调试操作至少有两种方式 request数字 :
-
启动节点进程像
NODE_DEBUG=urequest node script.js(单位:千美元)lib,request,otherlib工作也一样. -
设定
require('@coolaj86/urequest').debug = true任何时间( 这都一样) 作为一.