如何使用带有 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
}
我可以在定义 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
}