如何使用带有 Jersey 的 @QueryParam 定义和测试 DELETE 操作端点?

How to define and test a DELETE operation endpoint using @QueryParam with Jersey?

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

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

但是没有用。

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

定义一个 DELETE 端点

配合@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
}