【发布时间】:2021-07-10 22:24:32
【问题描述】:
如何为以下类型创建 URL?我正在做类似下面的事情。如果我同时发送“path”和“PathSegments”值,它只需要 PathSegment 的值而不是路径的值。
"https://localhost/api/customer" + "/" +{Id1} + "/" + "summary?invoiceId=" + {Id2} + "&page=0&pageSize=100&q=" + {Id3} ;
public static String abcd(String path, List<NameValuePair> paramsLst, String...pathSegment){
URIBuilder builder1 = new URIBuilder()
.setScheme("https")
.setHost("localhost")
.setPath(path) // "/api/customer"
.addParameter(paramsLst)
.setPathSegments(pathSegment);
return builder1.toString();
}
【问题讨论】:
-
我认为您的问题是您在做的事情上使用了错误的术语。这不是多条路径。它是一条路径,路径中有多个组件。 (一个 URI 只能有一个路径。这就是规范所说的。在 URI 中设置 多个 路径没有意义。)无论如何,如果你使用了错误的术语,您将难以理解使用正确术语的 API javadocs、教程等。
-
感谢@stephen 纠正我。这意味着“path”和“pathSegments”永远不能一起使用?
-
这取决于您使用的
URIBuilderAPI,您并没有具体说明这一点。但是,如果您在谈论 ApacheURIBulder,那是正确的。setPath或setPathSegments调用将替换之前的路径/路径段。 -
(如果javadoc不清楚,请阅读源代码。这就是我所做的......)
-
我正在放心地进行 API 自动化。我想找到一种替代方法来替换我们在一行中编写完整 URL 的方法,就像我在问题中提到的那样。所以,我想用 Apache URIBuilder 来做。但是,如果我必须创建使主要测试用例代码冗长的查询参数列表,则代码中会占用很多行。除了我可以使用的 URIBuilder 或者这个应该没问题,你能建议任何其他方式吗?
标签: java url uri rest-assured