我们的后端具有RESTful API,并且这项重要的服务需要1分钟以上的时间才能做出响应。
因此,大约90秒钟后,响应已准备就绪,过程已完成,但浏览器未从服务器获得任何响应(待处理),然后最终失败了(图像如下)。我已经用低数据测试了服务器,并批准只有在响应需要1分钟以上才能准备就绪时才会发生。我该如何解决这个问题?
Response failed after nothing happens
这是服务:
@POST
@Path("/search")
public Response hotelSearch(@RequestBody InputValues value) {
/* sending request to several other API
retrieving data from PostgreSQL DB
creating a big DTO
*/
return Response.ok(DTO).build();
}
注意:我们正在使用apache-tomcat 9.0.8和JAVA 8! 导入的依赖项:
compile 'org.springframework:spring-web:4.3.6.RELEASE'
compile 'org.springframework:spring-orm:4.0.2.RELEASE'
compile 'org.springframework:spring-aspects:4.0.2.RELEASE'
compile 'org.springframework.security:spring-security-web:3.2.1.RELEASE'
compile 'org.springframework.security:spring-security-config:3.2.1.RELEASE'
compile 'org.springframework.security:spring-security-cas:3.2.1.RELEASE
compile 'org.glassfish.jersey.ext:jersey-spring3:2.6'
答案 0 :(得分:1)
您可以立即返回带有HTTP 200 OK
标头的HTTP 202 Accepted
响应,而不是返回所有结果都返回的Location
响应,客户端可以在其中返回结果内。
然后,客户端将使用Location
方法轮询GET
标头中的URL,直到所有结果准备就绪为止。
如果客户端未准备好就检索结果,则返回一个HTTP 404 Not Found
响应,并可选地带有一个“ Retry-After”标头。
当客户端检索完成的结果时,只需返回一个HTTP 200 OK
响应,并将所有结果显示在正文中。