2017-08-02 22 views
0

根据REST,put,delete等是幂等的,即对资源重复执行的操作会导致相同的响应。这是否以某种方式自动完成(缓存在浏览器等),还是由程序员(在方法中)完成/确保? 这是幂等性吗?Jersey/JAX-RS放置,删除幂等性 - 由程序员提供或将要完成

例如,在我的方法来处理删除请求 -

@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

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

第二次删除调用是否返回204或404?由于重复调用相同的方法,任一响应都会使系统处于相同的状态;一个向客户发出信号,表示没有资源要删除,另一个则表示客户端此时肯定没有这种资源。

唯一错误实现(根据REST标准)将是该系统切换资源的反复调用删除状态 - 这将使客户不确定什么影响它的下一个电话会在系统上有。

相关问题