【问题标题】:Using queryParam linked or unlinked with WebTarget DELETE produces different results使用与 WebTarget DELETE 链接或取消链接的 queryParam 会产生不同的结果
【发布时间】:2017-03-15 16:47:09
【问题描述】:

我有一个基本的javax.ws.rs REST API 类:

@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>

我知道我在做一些可能很愚蠢的事情,但仍然可以在这里看到我的错误。任何帮助将不胜感激。

谢谢!

【问题讨论】:

    标签: java jax-rs jersey-client


    【解决方案1】:

    线

    target.queryParam("id", true);
    

    不修改target,它只是返回一个带有查询参数集的 WebTarget

    你可以的

    target = target.queryParam("id", true);
    

    但你的第二个测试是正确的方法

    【讨论】:

    • 太棒了!谢谢!
    猜你喜欢
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    相关资源
    最近更新 更多