带有 null put 方法的 Jersey 客户端
Jersey client with null put method
我正在为我的一项服务开发 Jersey 服务客户端,但无法确定通过客户端的 put 传递空实体的最佳方式。在服务方面,这是我的端点:
@PUT
@Path("/rule/disable/key/{key}")
@Produces(MediaType.APPLICATION_JSON)
public Response disableRuleByKey(@PathParam("key") String key)
throws Exception {
try {
DAL.getWriter().disableRuleByKey(key);
return Response.ok().build();
} catch (BlahException bla) {
throw de;
}
基本上,所有方法在后端所做的就是翻转一个开关,供应用程序的其他部分使用。我不确定在这里使用 put 是否正确(但这是队友写的)。我知道它甚至没有 JSON 有效负载。
无论如何,在客户端,我有这个通用的 putItem()
代码供我所有的客户使用 extends
:
public static <T> boolean putItem(Client client, String uri, T item)
throws InterruptedException,
ExecutionException {
Invocation putConfig = client.target(uri).request()
.buildPut(Entity.entity(item, MediaType.APPLICATION_JSON));
Future<Response> asyncResponse = putConfig.submit();
Response response = asyncResponse.get();
return response.getStatus() == Status.OK.getStatusCode();
}
这个 PUT
使用 JSON 有效负载进入数据库很好,但是由于上面的方法没有特定的有效负载,我想知道最好的行动方案是什么。将调用的 .buildPut()
修改为在其中包含 null
没问题,因为我没有传递有效负载。
我也愿意修改端点,但这是我目前拥有的,无法找出将此值发送到后端的最佳方式。我是否应该只修改端点以使用 JSON 对象而不是将密钥作为 @PathParam
传递?
当用 PUT
请求替换资源状态时,您应该在请求负载中发送新表示。
查看 RFC 7231,HTTP/1.1 中语义和内容的当前参考:
The PUT
method requests that the state of the target resource be created or replaced with the state defined by the representation enclosed in the request message payload. [...]
我正在为我的一项服务开发 Jersey 服务客户端,但无法确定通过客户端的 put 传递空实体的最佳方式。在服务方面,这是我的端点:
@PUT
@Path("/rule/disable/key/{key}")
@Produces(MediaType.APPLICATION_JSON)
public Response disableRuleByKey(@PathParam("key") String key)
throws Exception {
try {
DAL.getWriter().disableRuleByKey(key);
return Response.ok().build();
} catch (BlahException bla) {
throw de;
}
基本上,所有方法在后端所做的就是翻转一个开关,供应用程序的其他部分使用。我不确定在这里使用 put 是否正确(但这是队友写的)。我知道它甚至没有 JSON 有效负载。
无论如何,在客户端,我有这个通用的 putItem()
代码供我所有的客户使用 extends
:
public static <T> boolean putItem(Client client, String uri, T item)
throws InterruptedException,
ExecutionException {
Invocation putConfig = client.target(uri).request()
.buildPut(Entity.entity(item, MediaType.APPLICATION_JSON));
Future<Response> asyncResponse = putConfig.submit();
Response response = asyncResponse.get();
return response.getStatus() == Status.OK.getStatusCode();
}
这个 PUT
使用 JSON 有效负载进入数据库很好,但是由于上面的方法没有特定的有效负载,我想知道最好的行动方案是什么。将调用的 .buildPut()
修改为在其中包含 null
没问题,因为我没有传递有效负载。
我也愿意修改端点,但这是我目前拥有的,无法找出将此值发送到后端的最佳方式。我是否应该只修改端点以使用 JSON 对象而不是将密钥作为 @PathParam
传递?
当用 PUT
请求替换资源状态时,您应该在请求负载中发送新表示。
查看 RFC 7231,HTTP/1.1 中语义和内容的当前参考:
The
PUT
method requests that the state of the target resource be created or replaced with the state defined by the representation enclosed in the request message payload. [...]