如何证明HTTP POST方法不是幂等的?

时间:2018-08-05 02:40:20

标签: java http

反正从下面的示例代码可以证明Http POST方法不是幂等的

示例代码:

@RequestMapping(value = "/event", method = RequestMethod.POST, consumes = "application/json")
public void printEvent(@RequestBody Request request, HttpServletRequest httpRequest) throws InterruptedException {
    System.out.println("HttpRequest: "+httpRequest.getHeader("session")+" & Request: "+request.toString());
    Thread.sleep(5000);
    System.out.println("HttpRequest: "+httpRequest.getHeader("session")+" & Request: "+request.toString());
}

1 个答案:

答案 0 :(得分:0)

不等幂是一个HTTP协议,例如 POST

编写后端代码的开发人员当然可以通过发出 POST 请求幂等来破坏合同。
提供的示例代码正是这样做的。控制器只做一件事-返回一个名为“ Spring Boot的问候!”的视图。

同样的想法也适用于其他HTTP方法。
如果开发人员以更改数据库的方式编写处理 GET 的后端控制器的请求(直接在 GET 控制器中在数据库中创建实体),则 GET 请求将不再是幂等的,即使合同另有规定。这绝对是一个坏习惯。