我们可以唯一地识别从 POST 方法发送响应的请求吗?

Can we uniquely identify request to send respond from a POST method?

我正在开发一个异步的网络服务。在我的客户端代码中,我使用 boto3 session client 来调用我的 Jetty 服务器的 GET API,这是一种类似 S3 的服务。 GET API 从 S3 获取原始数据并修改请求以便能够将请求转发到 Flask 服务器。 Python flask 然后处理请求(完成数据转换)并调用 Jetty 服务器的 POST API。

现在我不知道该如何回复原来的来电者?因为我不确定 API 请求是否可以有一个 session-id 来识别原始调用者?

我的 POST API 如何回复客户?以下是我要实现的目标的总体概念化。我该怎么做?

由于我使用的是嵌入式 Jetty,所以我使用了 built-in org.eclipse.jetty.server.HttpChannel.Listener.

我现在可以访问具有该请求的 HTTP 字段的原始内部 Jetty org.eclipse.jetty.server.Request object。

要使用它,我将创建一个实例 HttpChannel.Listener,并将其作为 bean 添加到我的连接器中。

public class RequestChannelListener implements HttpChannel.Listener {
    @Override
    public void onRequestBegin(Request request) {
        HttpFields.Mutable replacement = HttpFields.build(request.getHttpFields())
                .put("X-Request-ID", UUID.randomUUID().toString().toUpperCase());
        request.setHttpFields(replacement);
    }
}

在连接器中添加为 bean -

RequestChannelListener channelListener = new RequestChannelListener();
connector.addBean(channelListener);

然后该请求的所有其他访问,无论是 Jetty 的内部组件、web 应用程序、特定的 servlet、过滤器、转发、包含、servlet 规范中的错误处理、servlet 上下文之外的错误处理等都可以都看到了

检查自定义 header 是否被添加到请求中 -

Enumeration<String> headerNames = request.getHeaderNames();
        while(headerNames.hasMoreElements()) {
            String headerName = headerNames.nextElement();
            System.out.println("Header Name - " + headerName + ", Value - " + request.getHeader(headerName));
        }