如何从 java 中的 URL 字符串获取路径参数
How to get path paramters from URL string in java
我想创建一个函数,它将 URL 字符串作为参数,return
MultivaluedHashMap<String, String>
作为输出。我有 url 的格式,通过它我可以构造 UriTemplate class。
所以基本上我想创建类似于 requestContext.getUriInfo().getPathParameters()
的功能
所以我的函数将是
public MultivaluedHashMap<String, String> getPathParamtersFromUrl(string url)
{
}
我不知道如何得到这个。
注意:我不想提取查询参数。我想提取路径参数。
这会给你除http方案和域名之外的路径参数列表。
public static void main(String[] args) {
String url = "";
System.out.println("The path parameters of url:" + url);
List<String> p = getPathParamtersFromUrl(url);
p.stream().forEach(x -> System.out.println(x));
}
private static List<String> getPathParamtersFromUrl(String url) {
String[] path = url.split("\?");
String[] pathparams = path[0].split("\//");
String[] param = pathparams[1].split("\/");
List<String> p = Arrays.asList(param);
return p.stream().filter(x -> !x.contains(".")).collect(Collectors.toList());
}
在仔细查看 UriTemplate class 后,我找到了解决方案 class。
private MultivaluedMap<String, String> getPathParameters(String uri, String strUrlTemplate) {
UriTemplate template = new UriTemplate(strUrlTemplate);
Map<String, String> parameters = new HashMap<>();
Boolean value = template.match(uri, parameters);
return new MultivaluedHashMap(parameters);
}
我想创建一个函数,它将 URL 字符串作为参数,return
MultivaluedHashMap<String, String>
作为输出。我有 url 的格式,通过它我可以构造 UriTemplate class。
所以基本上我想创建类似于 requestContext.getUriInfo().getPathParameters()
所以我的函数将是
public MultivaluedHashMap<String, String> getPathParamtersFromUrl(string url)
{
}
我不知道如何得到这个。 注意:我不想提取查询参数。我想提取路径参数。
这会给你除http方案和域名之外的路径参数列表。
public static void main(String[] args) {
String url = "";
System.out.println("The path parameters of url:" + url);
List<String> p = getPathParamtersFromUrl(url);
p.stream().forEach(x -> System.out.println(x));
}
private static List<String> getPathParamtersFromUrl(String url) {
String[] path = url.split("\?");
String[] pathparams = path[0].split("\//");
String[] param = pathparams[1].split("\/");
List<String> p = Arrays.asList(param);
return p.stream().filter(x -> !x.contains(".")).collect(Collectors.toList());
}
在仔细查看 UriTemplate class 后,我找到了解决方案 class。
private MultivaluedMap<String, String> getPathParameters(String uri, String strUrlTemplate) {
UriTemplate template = new UriTemplate(strUrlTemplate);
Map<String, String> parameters = new HashMap<>();
Boolean value = template.match(uri, parameters);
return new MultivaluedHashMap(parameters);
}