使用与 WebTarget DELETE 链接或取消链接的 queryParam 会产生不同的结果
Using queryParam linked or unlinked with WebTarget DELETE produces different results
我有基本的 javax.ws.rs
REST API class:
@Path("/")
public class DeleteApi {
@DELETE
public void testDelete(@DefaultValue("false") @QueryParam("id") boolean id) {
logger.info("id [{}]", id);
}
}
我在测试中使用 javax.ws.rs.client.Client
来测试此 DELETE 方法:
@Test
public void testCallDelete() {
// Not linked version
WebTarget target = client.target("http://127.0.0.1:8080/fscrawler/");
target.queryParam("id", true);
target.request().delete();
// Linked version
client.target("http://127.0.0.1:8080/fscrawler/")
.queryParam("id", true)
.request()
.delete();
}
它产生:
23:37:14,870 INFO [f.p.e.c.f.r.RestApi] id [false]
23:37:14,910 INFO [f.p.e.c.f.r.RestApi] id [true]
如果这对我有帮助,这里是我的 pom.xml
文件中的主要依赖项:
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-grizzly2-http</artifactId>
<version>2.25.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.25.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.25.1</version>
</dependency>
我知道我在做一些可能很愚蠢的事情,但仍然可以看出我在这里犯了什么错误。任何帮助将不胜感激。
谢谢!
行
target.queryParam("id", true);
不修改 target
,它只是 returns 一个 new WebTarget with the queryparam set
你可以做到
target = target.queryParam("id", true);
但是你的第二次测试是正确的方法
我有基本的 javax.ws.rs
REST API class:
@Path("/")
public class DeleteApi {
@DELETE
public void testDelete(@DefaultValue("false") @QueryParam("id") boolean id) {
logger.info("id [{}]", id);
}
}
我在测试中使用 javax.ws.rs.client.Client
来测试此 DELETE 方法:
@Test
public void testCallDelete() {
// Not linked version
WebTarget target = client.target("http://127.0.0.1:8080/fscrawler/");
target.queryParam("id", true);
target.request().delete();
// Linked version
client.target("http://127.0.0.1:8080/fscrawler/")
.queryParam("id", true)
.request()
.delete();
}
它产生:
23:37:14,870 INFO [f.p.e.c.f.r.RestApi] id [false]
23:37:14,910 INFO [f.p.e.c.f.r.RestApi] id [true]
如果这对我有帮助,这里是我的 pom.xml
文件中的主要依赖项:
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-grizzly2-http</artifactId>
<version>2.25.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.25.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.25.1</version>
</dependency>
我知道我在做一些可能很愚蠢的事情,但仍然可以看出我在这里犯了什么错误。任何帮助将不胜感激。
谢谢!
行
target.queryParam("id", true);
不修改 target
,它只是 returns 一个 new WebTarget with the queryparam set
你可以做到
target = target.queryParam("id", true);
但是你的第二次测试是正确的方法