public abstract class PathHandler<T extends Context> extends Object implements Handler<T>, Matchable<T>, Comparable<PathHandler<T>>
| 构造器和说明 |
|---|
PathHandler(String path)
创建
PathHandler |
PathHandler(String protocol,
String path)
创建
PathHandler |
| 限定符和类型 | 方法和说明 |
|---|---|
int |
compareTo(PathHandler<T> other) |
protected int |
doCompare(PathHandler<T> other)
当前分片 所计算的 优先级值 用于 Handler 排序匹配
匹配规则:
1.
|
int |
match(T ctx)
匹配
|
protected int |
pathMatch(List<String> pieces,
Map<String,String> pathToken)
路径匹配
路径变量 {name}
|
String |
toString() |
public PathHandler(String path)
PathHandlerpath - pathpublic PathHandler(String protocol, String path)
PathHandlerpublic int compareTo(PathHandler<T> other)
compareTo 在接口中 Comparable<PathHandler<T extends Context>>protected int doCompare(PathHandler<T> other)
当前分片 所计算的 优先级值 用于 Handler 排序匹配
匹配规则:
1. 分片个数 越大越先匹配
2. 分片位置 越小越先匹配
3. 单个分片匹配规则:
3.1. 单 / 比较
3.2. 分片是固定字符串 优先匹配
3.3. 分片中包含模式匹配规则
3.3.1 分片固定值部分个数 越大越先匹配. 例: a{var1}b 这个分片中 有 a, b 两个固定值
3.3.2 分片变量个数 越大越先匹配. 例: a{var1}b{var2} 这个分片中有 var1, var2 两个变量
3.4. 按字符串自然顺序比较(1.在preMismatch时有优势 2.每次的顺序都一样方便调试)
分片位置(必须)
比如这两个路径: /test/a{var1}/a{var2}, /test/{var1}/a{var2}b 应该先匹配前一个的中间piece, 再匹配后一个的最后那个piece
例: /test/{var1}/a{var2}b/c 优先于 /test/a{var1}/a{var2}
protected int pathMatch(List<String> pieces, Map<String,String> pathToken)
Copyright © 2023. All rights reserved.