详解node HTTP请求客户端(5)

pool - 描述用于请求的代理的对象。如果此选项被省略,请求将使用全局代理(当允许时)。否则,请求将搜索您的自定义代理的池。如果没有找到自定义代理,将创建一个新的代理,并将其添加到池中。注意: pool 仅在指定agent选项后可用

maxSockets属性同样可用于pool对象,用于设置代理最大可创建的 sockets 连接数(如:pool: {maxSockets: Infinity})

当发送 multiple 请求时,会创建一个新的pool 对象,maxSockets 将不会按预期工作。

timeout - 超时时间(毫秒)

本地代理选项:

localAddress - 用于连接网络连接的本地接口

proxy - 使用的HTTP代理。支持代理使用基本认证,即认证信息通过url参数发送

strictSSL - 如果设置为true,则需要有效的 SSL证书。注意: 要使用自己的证书管理,则需要指定一个所创建的代理的选项。

tunnel - 控制 HTTP CONNECT 连接的隧道,可为以下值:

undefined (默认) - true 表示目标为 https, false 为其它方式

true - 总是通过CONNECT隧道请求连接到目的 代理

false - 使用GET请求方法请求目标.

proxyHeaderWhiteList -发送到代理隧道的请求头白名单

proxyHeaderExclusiveList - 发送到代理隧道的请求头白名单,仅用于代理而不是目标服务器

HAR相关选项:

time - 为true时,则请求-响应环(包括所有重定向)在指定毫秒内提供,响应结果的回应时长为elapsedTime

har - HAR 1.2 请求对象 Object,将处理从HAR格式重写匹配值

callback - 或者通过选项对象传入请求回调函数。回调函数包含以下3个参灵敏:

error - 错误对象(出错时存在,通常由http.ClientRequest对象返回)

http.IncomingMessage对象

response 响应体(String、Buffer或JSON 对象)

12. 便捷方法

Request还可以使用以HTTP方法命名的便捷方法。

request.defaults(options)

返回一个正常请求API的包装器,其默认值为所传递的options选项。

示例:

// 使用 baseRequest() 进行请求是会设置一个 'x-token' 请求头 var baseRequest = request.defaults({ headers: {'x-token': 'my-token'} }) // 使用 specialRequest() 进行请求时,会包含一个在 baseRequest 中设置的 'x-token' 请求头 // 还会有一个 'special' 请求头 var specialRequest = baseRequest.defaults({ headers: {special: 'special value'} })

request.put

与request()方法相同,但默认method: "PUT"

request.put(url)

request.patch

与request()方法相同,但默认method: "PATCH"

request.patch(url)

request.post

与request()方法相同,但默认method: "POST"

request.post(url)

request.head

与request()方法相同,但默认method: "HEAD"

request.head(url)

request.del / request.delete

与request()方法相同,但默认method: "DELETE"

request.del(url) request.delete(url)

request.get

与request()方法相同

request.get(url)

request.cookie

创建一个新Cookie

request.cookie('key1=value1')

request.jar

创建一个新Cookie Jar

request.jar()

注:Cookie Jar用于保存所访问网站的Cookie信息

13. 使用示例

var request = require('request') , rand = Math.floor(Math.random()*100000000).toString() ; request( { method: 'PUT' , uri: 'http://mikeal.iriscouch.com/testjs/' + rand , multipart: [ { 'content-type': 'application/json' , body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}}) } , { body: 'I am an attachment' } ] } , function (error, response, body) { if(response.statusCode == 201){ console.log('document saved as: '+ rand) } else { console.log('error: '+ response.statusCode) console.log(body) } } )

为了保持向后兼容,响应压缩默认不会启用。要访问gzip压缩的响应,需要将gzip选项设置为true。这样数据体会通过request自动解压缩,而响应的对象将未包含压缩数据。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wypyyd.html