我正在实现模拟 http 响应服务器。服务器必须验证输入请求 URL 和有效负载,然后将请求与配置的响应相匹配,然后将其返回给调用者。
因为我需要帮助使用静态标记化有效负载验证 http 请求动态内容有效负载。
因此,当我收到请求负载(如 json)时,将其与配置的标记化内容进行比较,如果不匹配则返回失败。
例如)我使用下面的代码对请求 url 执行相同的操作。
import java.util.HashMap;
import java.util.Map;
import org.springframework.web.util.UriComponentsBuilder;
import org.springframework.web.util.UriTemplate;
public static void main(String[] args) {
//template url
String template = "/name/{name}/age/{age}";
UriTemplate uriTemplate = new UriTemplate(template);
//actual url
String uri = "/name/Bob/age/47";
Map<String, String> parameters = new HashMap<>();
//returns Map
System.out.println("Dynamic Content Map: " + uriTemplate.match(uri));
System.out.println("URL Matched: " +uriTemplate.matches(uri));
parameters.put("name", "Foo");
parameters.put("age", "37");
UriComponentsBuilder builder = UriComponentsBuilder.fromPath(template);
System.out.println(builder.buildAndExpand(parameters).toUriString());
}
OUTPUT:
Dynamic Content: {name=Bob, age=47}
URL Matched: true
/name/Foo/age/37
因此,如果您查看此代码,UriTemplate 能够将配置的静态内容(姓名/年龄)与动态值 (Bob/47) 填充的内容进行比较。
我想在请求负载中进行相同的比较。现在的挑战是
- 内容可能是 XML 或 JSON,稍后可能是其他内容。
- 内容之间可能包含空格
- 顺序将不同或不同的 xml 名称空间
- 它将包含动态变量值以与静态进行比较
- 如何从负载中检索动态变量值
我知道我可以使用 XML 和 JSON 解析器进行比较,但如何比较内容中的静态变量和动态变量并检索它?
例如)静态{"name" : "$name", "age" : "$age"}
例如)动态{"name" : "Bob", "age" : 47}
有没有什么工具可以传递静态和动态内容,并且我将获得 isMatched 并检索地图中的动态常量,如上面显示的 uriTemplate 示例?
给我一些关于比较和提取动态字段的提示/想法吗?