Skip to content

附件

概述

附件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);
}

某次调用输出结果如下:

shell
a: A, traceId: 521300a9-58cd-4a18-9b32-807dfa1ec34c

贡献者

页面历史

Released under the MIT License.