反正从下面的示例代码可以证明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());
}
答案 0 :(得分:0)
不等幂是一个HTTP协议,例如 POST 。
编写后端代码的开发人员当然可以通过发出 POST 请求幂等来破坏合同。
提供的示例代码正是这样做的。控制器只做一件事-返回一个名为“ Spring Boot的问候!”的视图。
同样的想法也适用于其他HTTP方法。
如果开发人员以更改数据库的方式编写处理 GET 的后端控制器的请求(直接在 GET 控制器中在数据库中创建实体),则 GET 请求将不再是幂等的,即使合同另有规定。这绝对是一个坏习惯。