New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
对于 op=mv / bt 的查询,使用 ParamFilter
来简化多值传参,例如:用 age=[20,30] 替代 age-0=20&age-1=30
#10
Comments
在 Spring Boot 框架下,且使用的是 @Bean
public ParamFilter myParamFilter() {
return new ParamFilter() {
final String OP_SUFFIX = "-op";
@Override
public <T> Map<String, Object> doFilter(BeanMeta<T> beanMeta, Map<String, Object> paraMap) {
Map<String, Object> newParaMap = new HashMap<>();
paraMap.forEach((key, value) -> {
if (key == null) {
return;
}
boolean isOpKey = key.endsWith(OP_SUFFIX);
String opKey = isOpKey ? key : key + OP_SUFFIX;
Object opVal = paraMap.get(opKey);
if (!"mv".equals(opVal) && !"bt".equals(opVal)) {
newParaMap.put(key, value);
return;
}
if (newParaMap.containsKey(key)) {
return;
}
String valKey = key;
Object valVal = value;
if (isOpKey) {
valKey = key.substring(0, key.length() - OP_SUFFIX.length());
valVal = paraMap.get(valKey);
}
if (likelyJsonArr(valVal)) {
try {
String vKey = valKey;
JSONKit.toArray((String) valVal).forEach(
(index, data) -> newParaMap.put(vKey + "-" + index, data.toString())
);
newParaMap.put(opKey, opVal);
return;
} catch (Exception ignore) {}
}
newParaMap.put(key, value);
});
return newParaMap;
}
private boolean likelyJsonArr(Object value) {
if (value instanceof String) {
String str = ((String) value).trim();
return str.startsWith("[") && str.endsWith("]");
}
return false;
}
};
} |
ParamFilter
实现用 JSON 数组来简化多值传参,例如:age=[20,30] 替代 age-0=20&age-1=30
ParamFilter
实现用 JSON 数组来简化多值传参,例如:age=[20,30] 替代 age-0=20&age-1=30ParamFilter
实现:用 JSON 数组来简化多值传参,例如:age=[20,30] 替代 age-0=20&age-1=30
上述代码中用到的 JSON 解析工具 Gradleimplementation 'com.ejlchina:jsonkit-jackson:1.3.3' // 使用 Jackson 底层实现
implementation 'com.ejlchina:jsonkit-gson:1.3.3' // 使用 Gson 底层实现
implementation 'com.ejlchina:jsonkit-fastjson:1.3.3' // 使用 Fastjson 底层实现 Maven<!-- 使用 Jackson 底层实现 -->
<dependency>
<groupId>com.ejlchina</groupId>
<artifactId>jsonkit-jackson</artifactId>
<version>1.3.3</version>
</dependency>
<!-- 使用 Gson 底层实现 -->
<dependency>
<groupId>com.ejlchina</groupId>
<artifactId>jsonkit-gson</artifactId>
<version>1.3.3</version>
</dependency>
<!-- 使用 Fastjson 底层实现 -->
<dependency>
<groupId>com.ejlchina</groupId>
<artifactId>jsonkit-fastjson</artifactId>
<version>1.3.3</version>
</dependency>
|
ParamFilter
实现:用 JSON 数组来简化多值传参,例如:age=[20,30] 替代 age-0=20&age-1=30ParamFilter
来简化多值传参,例如:用 age=[20,30] 替代原来的 age-0=20&age-1=30
ParamFilter
来简化多值传参,例如:用 age=[20,30] 替代原来的 age-0=20&age-1=30ParamFilter
来简化多值传参,例如:用 age=[20,30] 替代 age-0=20&age-1=30
需要注意当这样直接请求时: 需要对 [20,30] 进行一次 URLEncode,这样就 OK 了: |
No description provided.
The text was updated successfully, but these errors were encountered: