简体   繁体   English

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

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

Can I use @QueryParam when defining a DELETE operation? 定义DELETE操作时可以使用@QueryParam吗? If yes, when I need to test it using jersey client, how the java code will look like? 如果是,当我需要使用Jersey客户端进行测试时,java代码将如何显示? I tried something like 我尝试了类似的东西

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

But it was not working. 但这没有用。

You can define a DELETE endpoint using either @PathParam (recommended) or @QueryParam 您可以使用@PathParam (推荐)或@QueryParam定义DELETE端点。

With @PathParam (recommended) 使用@PathParam (推荐)

Endpoint: url/:id 端点: url/:id

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

Test: 测试:

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

With @QueryParam (bad RESTapi design) 使用@QueryParam (不良的RESTapi设计)

Endpoint: url?id=:id 端点: url?id=:id

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

Test: 测试:

@Test
public void testDeleteQueryParam() {
  Response output = target(url).queryParam("id", 3).request().delete();
   // asserts
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM