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

时间:2018-03-16 10:40:32

标签: java rest jersey jersey-test-framework

定义DELETE操作时可以使用@QueryParam吗?如果是,当我需要使用jersey客户端测试它时,java代码将如何显示?我试过像

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

但它没有用。

1 个答案:

答案 0 :(得分: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
}