大部分项目暴漏出来的接口是Http请求,数据格式是JSON格式
httpClient集成
- curl请求
- 内部可以请求外部的资源
- 服务和服务之间的调用全部是使用HttpClient
https://www.cnblogs.com/kitor/p/11235762.html
HttpClient 主要的功能
(1)实现了所有 HTTP 的方法(GET,POST,PUT,DELETE 等)
(2)支持自动转向
(3)支持 HTTPS 协议
(4)支持代理服务器等
config.httpClient
/config/config.default.js
config.httpClient = {
// 是否开启本地 DNS 缓存,默认关闭,开启后有两个特性
// 1. 所有的 DNS 查询都会默认优先使用缓存的,即使 DNS 查询错误也不影响应用
// 2. 对同一个域名,在 dnsCacheLookupInterval 的间隔内(默认 10s)只会查询一次
enableDNSCache: false,
// 对同一个域名进行 DNS 查询的最小间隔时间
dnsCacheLookupInterval: 10000,
// DNS 同时缓存的最大域名数量,默认 1000
dnsCacheMaxLength: 1000,
request: {
// 默认 request 超时时间
timeout: 3000,
},
httpAgent: {
// 默认开启 http KeepAlive 功能
keepAlive: true,
// 空闲的 KeepAlive socket 最长可以存活 4 秒
freeSocketTimeout: 4000,
// 当 socket 超过 30 秒都没有任何活动,就会被当作超时处理掉
timeout: 30000,
// 允许创建的最大 socket 数
maxSockets: Number.MAX_SAFE_INTEGER,
// 最大空闲 socket 数
maxFreeSockets: 256,
},
httpsAgent: {
// 默认开启 https KeepAlive 功能
keepAlive: true,
// 空闲的 KeepAlive socket 最长可以存活 4 秒
freeSocketTimeout: 4000,
// 当 socket 超过 30 秒都没有任何活动,就会被当作超时处理掉
timeout: 30000,
// 允许创建的最大 socket 数
maxSockets: Number.MAX_SAFE_INTEGER,
// 最大空闲 socket 数
maxFreeSockets: 256,
},
}
httpClient响应参数
默认HttpClient不会对响应体做任何处理,因此会直接返回Buffer类型的数据,
指定响应数据类型opts.dataType,HttpClient将会根据dataType对返回值中的data做对应处理
httpClient 默认是 get请求
HTTP请求返回的响应结果result中包含3个属性,分别是
- status,响应状态码
- headers,响应头信息
- data,响应体信息,默认为Buffer类型
{
data: <Buffer 7b 22 65 72 72 63 6f 64 65 22 3a 34 30 30 31 38 2c 22 65 72 72 6d 73 67 22 3a 22 62 61 64 20 63 6f 64 65 22 2c 22 65 72 72 6f 72 22 3a 33 2c 22 6d 65 ... 19 more bytes>,
status: 200,
headers: {
server: 'Tengine',
'content-type': 'application/json; charset=utf-8',
'content-length': '69',
connection: 'keep-alive',
date: 'Sat, 23 May 2020 12:17:31 GMT',
'x-tt-logid': '20200523201731010131036232361281BE',
'server-timing': 'inner; dur=0, cdn-cache;desc=MISS,edge;dur=0,origin;dur=89',
'x-tt-trace-host': '01b996da57d6c895f8a74a08ea30e03c41fa589acc716cdb70b13b08d85c02f7af017e5fe10e660a2260d6706cd5436b878771057e6b8d105e7bff138312d8223b19339c99416ddebce6e88cef6d2c84b2',
'x-tt-trace-tag': 'id=3;cdn-cache=miss',
'x-tt-timestamp': '1590236251.323',
via: 'cache11.cn683[89,0]',
'timing-allow-origin': '*',
eagleid: '71db884b15902362512522488e'
},
res: {
status: 200,
statusCode: 200,
statusMessage: 'OK',
headers: {
server: 'Tengine',
'content-type': 'application/json; charset=utf-8',
'content-length': '69',
connection: 'keep-alive',
date: 'Sat, 23 May 2020 12:17:31 GMT',
'x-tt-logid': '20200523201731010131036232361281BE',
'server-timing': 'inner; dur=0, cdn-cache;desc=MISS,edge;dur=0,origin;dur=89',
'x-tt-trace-host': '01b996da57d6c895f8a74a08ea30e03c41fa589acc716cdb70b13b08d85c02f7af017e5fe10e660a2260d6706cd5436b878771057e6b8d105e7bff138312d8223b19339c99416ddebce6e88cef6d2c84b2',
'x-tt-trace-tag': 'id=3;cdn-cache=miss',
'x-tt-timestamp': '1590236251.323',
via: 'cache11.cn683[89,0]',
'timing-allow-origin': '*',
eagleid: '71db884b15902362512522488e'
},
size: 69,
aborted: false,
rt: 166,
keepAliveSocket: false,
data: <Buffer 7b 22 65 72 72 63 6f 64 65 22 3a 34 30 30 31 38 2c 22 65 72 72 6d 73 67 22 3a 22 62 61 64 20 63 6f 64 65 22 2c 22 65 72 72 6f 72 22 3a 33 2c 22 6d 65 ... 19 more bytes>,
requestUrls: [
'https://developer.toutiao.com/api/apps/jscode2session?appid=tt5e4728fac17db2af&secret=ce052ea527836f25c11d94f1b7330ecf7f9b1dec&code=1b257d9257d2a413&anonymousCode=2c13ffb4bdddf41d'
],
timing: null,
remoteAddress: '113.219.136.30',
remotePort: 443,
socketHandledRequests: 1,
socketHandledResponses: 1
}
}