我正在编写一个带有分页的 REST API 端点,我希望它包含指向第一页、上一页、下一页和最后一页的链接。我还希望这些链接包含原始请求中发送的任何参数(顺便说一句,这是一个坏主意吗?
我正在使用 UriBuilder 类来创建这些链接。我的函数如下所示:
private static URI createUri(String endpoint,
MultivaluedMap<String, String> queryParameters) {
final UriBuilder uriBuilder = UriBuilder.fromPath(endpoint);
queryParameters.forEach(
(key, valueList) -> valueList.forEach(
value -> uriBuilder.queryParam(key, value)));
return uriBuilder.build();
}
现在,我不希望对此链接中的参数进行编码,因为它们应该可供将使用 API 的任何人读取。 问题是 UriBuilder.queryParam()
接缝以始终对它们进行编码。
我可以简单地将参数连接到端点,但我觉得这将是重新发明轮子。所以我想知道是否有更好的方法可以做到这一点。
uriBuilder.build(false).toUriString()