记录一次线上springboot项目接口短时间相同请求只处理一次的问题

114 阅读1分钟

问题代码:

@GetMapping ("/detail/{id}") 
    public Document detail(@PathVariable("id") String id){ 
    return documentService.getById(id);  
}

问题描述:同代码,同一个springboot程序,在本地运行,接收相同请求都能做出响应。但是放到云服务器上运行时,接收相同的请求却只回应第一次的请求? 即小程序访问发送相同参数请求多次访问接口A,服务器只返回第一次请求的结果。 只有过一会访问接口A,或者访问A完,访问B,再访问A才又有数据。

疑惑:一开始没有怀疑代码问题,因为代码相同,环境相同,本地运行没有问题,即控制变量法失效了。控制器也没有报错。 验证: 1.线上数据库没问题 2.log打印日志没问题

破案线索: 有一个update接口C和接口A需要同时执行,但是C接口不会出现上述问题。于是开始怀疑可能是代码的问题。

解决:很抽象,把Get请求换成Post请求后就解决了问题。

@PostMapping ("/detail")  
    public Document detail(@RequestBody Document document){  
    return documentService.getById(document.getId());  
}