本文介绍自定义解析规则策略的匹配逻辑。
规则策略匹配逻辑说明
使用规则策略的解析流程如下所示,通过请求接口中携带的参数来匹配具体的规则,规则从上往下串行匹配,一旦有规则命中,则终止匹配并返回已经匹配规则的结果。如果现有的规则都没有被命中,则去权威服务器获取结果并返回。
单条规则参数匹配的逻辑如下:
接口携带的参数完整匹配规则中配置的参数, 则匹配成功。完整匹配是指,解析参数是规则配置参数的子集或全集。
如果规则中未配置参数,则该条规则匹配成功。
规则中多个参数之间是「且」的关系。
下面举例说明具体的匹配逻辑:
假如需要自定义解析的域名是:www.example.com
示例1:
规则 A 参数配置如下:
参数名 | 参数值 |
osType | Android |
规则 B 参数配置如下:
参数名 | 参数值 |
osType | iOS |
规则 C 参数配置如下:
参数名 | 参数值 |
osType | Android |
bizType | car |
携带的参数:
参数名 | 参数值 |
osType | iOS |
匹配结果:
示例1中,携带的参数完全匹配到规则B,HTTPDNS 服务端会返回规则 B 中的记录值。
示例2:
规则 A 参数配置如下:
参数名 | 参数值 |
osType | iOS |
bizType | app |
规则 B 参数配置如下:
参数名 | 参数值 |
osType | iOS |
规则 C 参数配置如下:
参数名 | 参数值 |
osType | Android |
bizType | car |
携带的参数:
参数名 | 参数值 |
osType | iOS |
匹配结果:
示例2中,因为规则的参数是「且」的关系,根据完全匹配的原则,携带的参数完全匹配到 规则B,HTTPDNS 服务端会返回规则 B 中的记录值。
示例3:
规则 A 参数配置如下:
参数名 | 参数值 |
osType | iOS |
bizType | car |
规则 B 参数配置如下:
参数名 | 参数值 |
osType | iOS |
bizType | car |
region | hangzhou |
规则 C 参数配置如下:
参数名 | 参数值 |
osType | Android |
bizType | car |
region | shanghai |
携带的参数:
参数名 | 参数值 |
osType | iOS |
bizType | car |
region | hangzhou |
匹配结果:
示例3中,根据完全匹配和优先返回的原则,携带的参数完整匹配到规则A,HTTPDNS 服务端会优先返回规则 A 中的记录值。
示例4:
规则 A 参数配置如下:
参数名 | 参数值 |
osType | Android |
bizType | car |
规则 B 参数配置如下:
参数名 | 参数值 |
osType | iOS |
bizType | car |
region | hangzhou |
规则 C 参数配置如下:
参数名 | 参数值 |
osType | Android |
bizType | car |
region | shanghai |
携带的参数:
参数名 | 参数值 |
osType | iOS |
匹配结果:
示例4中,根据完全匹配和优先返回的原则,携带的参数没有命中任何规则,HTTPDNS 服务端会返回权威服务器的查询结果。
示例5:
规则 A 参数配置如下:
参数名 | 参数值 |
osType | Android |
bizType | car |
规则 B 没有配置参数。
规则 C 参数配置如下:
参数名 | 参数值 |
osType | Android |
bizType | car |
region | shanghai |
携带的参数:
参数名 | 参数值 |
osType | iOS |
匹配结果:
示例 5 中,根据完全匹配和优先返回的原则,携带的参数完整匹配到规则 B,HTTPDNS 服务端会优先返回规则 B 中的记录值。