配置文档
配置 | 描述 |
---|---|
id | 必须,number,默认 无。开发者平台分配的项目key |
uid | 建议,string,默认取 cookie 中的 uin 字段。当前用户的唯一标识符,白名单上报时将根据该字段判定用户是否在白名单中,字段仅支持字母数字@=._- ,正则表达式: /^[@=.0-9a-zA-Z_-]{1,60}$/ |
aid | 可选,boolean,默认 true。当前实例是否生成aid |
sample | 可选,number,默认 1。0~1 抽样率 |
pageUrl | 可选,number,默认 1000 ms。上报节流时间,在该时间段内的上报将会合并到一个上报请求中。 |
delay | 可选,number,默认 1000 ms。上报节流时间,在该时间段内的上报将会合并到一个上报请求中。 |
repeat | 可选,number,默认 5。重复上报次数,对于同一个错误或者同一个接口测速超过多少次不上报。如果传入 repeat 参数为 0,则不限制。 |
env | 可选,enum,默认 Aegis.environment.production。 当前项目运行所处的环境。| |
reportApiSpeed | 可选,boolean,默认 false。是否开启接口测速 |
reportAssetSpeed | 可选,boolean,默认 false。是否开启静态资源测速 |
reportLoadPackageSpeed | 可选,boolean,默认 false。是否开启包下载耗时上报 |
version | 可选,string,默认 sdk 版本号。当前上报版本,当页面使用了pwa或者存在离线包时,可用来判断当前的上报是来自哪一个版本的代码,仅支持字母数字.,:_- ,长度在 60 位以内 /^[0-9a-zA-Z.,:_-]{1,60}$/ |
websocketHack | 可选,boolean,默认 false 是否开启websocket监控。 |
ext1 | 可选,string,自定义上报的额外维度,上报的时候可以被覆盖 |
ext2 | 可选,string,自定义上报的额外维度,上报的时候可以被覆盖 |
ext3 | 可选,string,自定义上报的额外维度,上报的时候可以被覆盖 |
plugin | boolean 或者下面的对象类型 可选,object,默认为 {}。相关的配置: apiDetail : 可选,boolean,默认false。上报 api 信息的时候,是否上报 api 的请求参数和返回值; retCodeHandler: Function(data: String, url: String, xhr: Object):{isErr: boolean, code: string}, 返回码上报钩子函数。 会传入接口返回数据,请求url和xhr对象; reqParamHandler: Function(data: any, url: String) 上报请求参数的处理函数,可以对接口的请求参数进行处理,方便用户过滤上报请求参数的信息; resBodyHandler: Function(data: any, url: String) 上报 response 返回 body 的处理函数,可以对接口返回值的 response body 进行处理,只上报关键信息; reqHeaders: Array 需要上报的 http 请求 request headers 列表。 resHeaders: Array 需要上报的 http 请求 response headers 列表。注意使用小写。 如果开发者需要获取的字段非 “simple response header”,需要给在返回头中给字段添加 Access-Control-Expose-Headers resourceTypeHandler: Function,请求资源类型修正钩子函数 会传入接口url,返回值为‘static’或‘fetch’。 reportRequest: boolean, 默认为false。 开启Aegis V2.info全量上报, 不需要白名单配置。并上报所有接口请求信息(请开启reportApiSpeed) usePerformanceTiming: boolean,默认为false。Aegis V2 sdk 默认使用打点的方式计算接口耗时,该方式在移动端存在一些误差,开启 usePerformanceTiming 后,Aegis V2 sdk 会从 performance 中重新获取接口耗时,让接口耗时统计更为准确。需要注意的是,开启该参数的前提是用户业务接口请求 url 是独立且唯一的,用户可以在接口请求 url 中添加时间戳等方式来保证 url 唯一性。如果 url 不唯一,可能导致同 url 接口耗时获取错误。 injectTraceHeader: 可选,string,且必须为枚举值 'traceparent', 'sw8', 'b3', 'sentry-trace' 中的一种,开启该参数后,Aegis V2 会在用户请求头中注入相关 trace header。 injectTraceUrls: 可选,Array, 数组中传入 string 或者 RegExp。标记哪些请求 url 需要注入 trace 请求头。 injectTraceIgnoreUrls: 可选,Array, 数组中传入 string 或者 RegExp。标记哪些请求 url 不需要注入 trace 请求头。 traceFlag: 可选,boolean 或 number, 标记trace请求的flag设置 |
enableHttp2 | 可选,boolean,默认 false。 上报数据是否支持 HTTP2,默认没有开启。 |
setDataReportConfig | 可选,object,默认为{}。相关的配置: disabled: 可选,Boolean,默认false。是否禁用setData数据上报; timeThreshold: 可选,Number,单位为ms,默认值为30。上报的耗时阈值,表示仅上报更新耗时超过该阈值的数据; withDataPaths: 可选,Boolean,默认为true。是否上报本次更新的字段信息; |
api | 可选,object,默认为{}。相关的配置: apiDetail : 可选,boolean,默认false。上报 api 信息的时候,是否上报 api 的请求参数和返回值; retCodeHandler: Function(data: String, url: String, xhr: Object):{isErr: boolean, code: string}, 返回码上报钩子函数。 会传入接口返回数据,请求url和xhr对象 resourceTypeHandler: Function,请求资源类型修正钩子函数 会传入接口url,返回值为‘static’或‘fetch’。见示例[1]reportRequest: boolean, 默认为false。 开启aegis.info全量上报, 不需要白名单配置。并上报所有接口请求信息(请开启reportApiSpeed) |
ext1 | 可选,string,自定义上报的额外维度,上报的时候可以被覆盖 |
ext2 | 可选,string,自定义上报的额外维度,上报的时候可以被覆盖 |
ext3 | 可选,string,自定义上报的额外维度,上报的时候可以被覆盖 |
示例
[1] retCodeHandler,假如后台返回数据为:
{
body: {
code: 200,
retCode: 0,
data: {
// xxx
}
}
}
业务需要:code不为200,或者retCode不为0,此次请求就是错误的。此时只需进行以下配置:
new Aegis({
// xxx
reportApiSpeed: true, // 需要开启,不然不会有返回码上报
reportAssetSpeed: true,
api: {
retCodeHandler(data) {
// 注意这里拿到的data是string类型,如果需要对象需要手动parse下
try {
data = JSON.parse(data)
} catch(e) {}
return {
isErr: data.body.code !== 200 || data.body.retCode !== 0,
code: data.body.code
}
}
}
})