如何证明HTTPPOST方法不是幂等的



有没有从下面的示例代码中证明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());
}

非幂等是HTTP方法(如POST(同意的"契约"。

编写后端代码的开发人员肯定会通过使POST请求幂等性来破坏合同
提供的示例代码正是这样做的。控制器只做一件事——返回一个名为"Greetings from Spring Boot!"的视图

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

最新更新