Java 中的 URL 查詢操作
一、概述
在 Java 中,我們可以使用幾個庫來動態地向 URL 添加查詢,同時保持 URL 的有效性。
在本文中,我們將學習如何使用其中的三個。三者中的每一個都執行完全相同的任務。因此,我們將看到生成的 URL 是相同的。
2.Java EE 7 UriBuilder
最接近內置 Java 解決方案的UriBuilder
javax.ws.rs-api,
我們需要將其導入到我們的pom.xml
中:
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.1.1</version>
</dependency>
最新版本可以在Maven 存儲庫中找到。我們可能還需要導入jersey-commons
才能讓我們的應用程序運行。
UriBuilder
對象為我們提供了fromUri()
方法來創建基本URI
和queryParam()
來添加我們的查詢。然後我們可以調用build()
返回一個URI
:
@Test
void whenUsingJavaUriBuilder_thenParametersAreCorrectlyAdded() {
String url = "baeldung.com";
String key = "article";
String value = "beta";
URI uri = UriBuilder.fromUri(url)
.queryParam(key, value)
.build();
assertEquals("baeldung.com?article=beta", uri.toString());
}
如上所示,帶有附加查詢的 URL 看起來符合預期。
3.阿帕奇UriBuilder
Apache 在HttpClient
包中提供了自己的解決方案UriBuilder
。要使用它,我們需要將它添加到我們的pom.xml
中:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
最新版本可以在Maven 存儲庫中找到。
要使用它,我們首先使用我們的基本 URL String
調用URIBuilder
構造函數。然後使用它的構建器方法addParamter()
附加我們的參數,最後調用build()
:
@Test
void whenUsingApacheUriBuilder_thenParametersAreCorrectlyAdded() {
String url = "baeldung.com";
String key = "article";
String value = "alpha";
URI uri = new URIBuilder(url).addParameter(key, value)
.build();
assertEquals("baeldung.com?article=alpha", uri.toString());
}
4. 春季UriComponentsBuilder
如果我們有一個 Spring 應用程序,使用 Spring 提供的UriComponentsBuilder
可能是有意義的。要使用它,我們需要pom.xml
中的spring-web
依賴項:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>6.0.6</version>
</dependency>
我們可以在Maven Repository中找到最新版本。
我們可以使用UriComponentsBuilder
通過fromUriString()
創建一個 URI ,然後使用queryParam()
追加我們的查詢:
@Test
void whenUsingSpringUriComponentsBuilder_thenParametersAreCorrectlyAdded() {
String url = "baeldung.com";
String key = "article";
String value = "charlie";
URI uri = UriComponentsBuilder.fromUriString(url)
.queryParam(key, value)
.build()
.toUri();
assertEquals("baeldung.com?article=charlie", uri.toString());
}
與其他方法不同, build()
方法返回一個UriComponents
對象,因此要以URI,
我們還需要調用toURI().
5.結論
在本文中,我們看到了在 Java 中操作 URL 的三種方法。我們可以使用 Javas 擴展包、Apaches UriBuilder
或spring-web
解決方案添加查詢。每一個都讓我們相信 URL 結構是有效的,同時允許我們動態地構建它們。
出於這個原因,決定將哪個用於我們的應用程序取決於我們有哪些包和導入以及我們已經使用了哪些。每個庫都帶來了一系列有用的功能,因此我們還應該考慮是否可以同時滿足項目中的其他需求。
與往常一樣,示例的完整代碼可 在 GitHub 上獲得。