有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Jersey/JAXRS放置、删除程序员提供的或将由程序员完成的幂等性

根据REST,put,delete等是幂等的,也就是说,对一个资源重复执行的操作会产生相同的响应。这是自动完成的(在浏览器上缓存等),还是由程序员完成/确保(在方法中)? 这个幂等性只是象征性的吗

例如,在我处理删除请求的方法中—

@DELETE
@Produces({MediaType.TEXT_HTML})
public Response deleteEmployee() {
        String response = DAOaccess.deleteEmployee(name);
        return Response.noContent().build();
}

我可以用这种方法做任何事。那么,我必须在这里通过编写这样的代码(检查id等)来确保幂等性吗

当有人问我put和post之间的区别时,他们是从HTTP的角度问的,而不是从JAX-RS的角度问的(因为JAX-RS中可能没有功能上的区别)


共 (1) 个答案

  1. # 1 楼答案

    是的,开发者负责确保这里的幂等性。根据标准,PUT和DELETE应该是幂等的,但是对于这意味着什么,有很大的解释空间。JAX-RS在确保开发人员遵循REST最佳实践方面做得相对较少,并且会将每个请求路由到适当的端点,而没有一个过滤器来短路请求

    第二个delete调用返回204还是404?如果重复调用同一个方法,则任何一个响应都会使系统处于相同的状态;一个向客户端发出信号,表示没有可删除的资源,另一个向客户端发出信号,表示此时肯定没有此类资源

    唯一的错误的实现(根据REST标准)是系统在重复调用时切换资源的已删除状态-这会让客户端不确定下一次调用对系统会产生什么影响