附件
概述
附件Attachment
是用于HTTP
请求对象和HTTP
响应对象的K-V
结构,它是Solpic
提供的特性而非HTTP
协议的一部分。通过开启HTTP_RESPONSE_COPY_ATTACHMENTS
选项,支持在请求发送成功后把所有请求对象的附件拷贝到响应对象之中。
使用说明
AttachmentKey
在设计时候为了提高性能采用了全局递增的整数作为索引,因此尽可能把AttachmentKey
设计为常量才能更好地使用附件功能。见下面的例子:
java
private static final AttachmentKey A = AttachmentKey.ofKey("A");
private static final AttachmentKey TRACE_ID = AttachmentKey.ofKey("TRACE_ID");
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://httpbin.org/get"))
.method(HttpMethod.GET)
.attachment(A, "A")
.attachment(TRACE_ID, FastUUIDUtils.X.newRandomUUID())
.build();
HttpClient httpClient = Solpic.newHttpClientBuilder()
.option(HttpOptions.HTTP_RESPONSE_COPY_ATTACHMENTS, true)
.build();
HttpResponse<?> response = httpClient.send(request, PayloadSubscribers.X.discarding());
String a = response.getAttachment(A);
String traceId = response.getAttachment(TRACE_ID);
System.out.printf("a: %s, traceId: %s\n", a, traceId);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
某次调用输出结果如下:
shell
a: A, traceId: 521300a9-58cd-4a18-9b32-807dfa1ec34c
1