0

我可以@QueryParam在定义 DELETE 操作时使用吗?如果是,当我需要使用 jersey 客户端对其进行测试时,java 代码会是什么样子?我尝试了类似的东西

String result = client.target(url)
                      .queryParam("id",3)
                      .request(MediaType.APPLICATION_XML)
                      .delete(String.class);

但它不起作用。

4

1 回答 1

0

您可以DELETE使用@PathParam(推荐)或@QueryParam

使用@PathParam(推荐)

端点:url/:id

@DELETE
@Path("{id}")
@Produces(MediaType.APPLICATION_JSON)
public void deletePathParam(@PathParam("id") int id) {
  ...
}

测试:

@Test
public void testDeletePathParam() {
  Response output = target(url+"/3").request().delete();
   // asserts
}

使用@QueryParam(糟糕的 RESTapi 设计)

端点:url?id=:id

@DELETE
@Produces(MediaType.APPLICATION_JSON)
public void deleteQueryParam(@QueryParam("id") int id) {
  ...
}

测试:

@Test
public void testDeleteQueryParam() {
  Response output = target(url).queryParam("id", 3).request().delete();
   // asserts
}
于 2018-03-16T11:43:19.317 回答