如何支持使用 Spring/Servlets 进行批处理 Web API 请求处理
2022-09-02 22:39:27
我们使用 RESTEasy 编写了 Web API。我们希望为批处理请求提供支持,就像 Google 批处理请求处理的工作方式一样。
以下是目前使用的方法,
我们有一个过滤器,它接受传入的多部分请求。然后,此筛选器创建多个模拟请求和响应对象,然后使用这些模拟请求调用 chain.doFilter。
public class BatchRequestProcessingFilter extends GenericFilterBean {
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
MockHttpServletRequest[] mockRequests = BatchRequestProcessorUtils.parseRequest(request);
MockHttpServletResponse[] mockResponses = new MockHttpServletResponse[mockRequests.length];
for(int i=0 ; i <= mockRequests.length ; i++ ) {
chain.doFilter(mockRequests[i], mockResponses[i], chain);
}
BatchRequestProcessingUtils.populateResponseFromMockResponses(res, mockResponses);
}
}
MockHttpServletResponse
类返回一个包裹 的虚拟对象。OutputStream
ByteArrayOutputStream
BatchRequestProcessorUtils
解析多部分请求并返回模拟请求,该请求包装实际请求,但返回在实际请求正文的拆分正文中指定的标头。
我找不到任何支持批处理请求处理的现有库。所以我的问题是,这是支持批处理请求的正确方法,还是应该使用任何标准方法?
请注意,我们使用的是Tomcat 8。