我们可以唯一地识别从 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));
}
我正在开发一个异步的网络服务。在我的客户端代码中,我使用 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));
}