java - WebClient - 添加 defaultHeaders
问题描述
我正在尝试将多个标头放入 defaultHeaders(),但我不知道如何从 createHeaders() 方法的返回中创建消费者对象
this.someWebClient = WebClient.builder()
.baseUrl(someConfiguration.getApiUrl())
.clientConnector(buildTimeoutConnector())
.defaultHeaders(????) // Consumer<HttpHeaders>
.build();
我可以用这种方式构建我的标题:
private HttpHeaders createHeaders(String token) {
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.ACCEPT, V1_PUBLIC);
headers.add(HttpHeaders.HOST, "abc");
headers.add(HttpHeaders.AUTHORIZATION, "Bearer " + token);
return headers;
}
但是如何将它包装到消费者中?
解决方案
显然,方法文档说它需要Consumer
某种类型。因此,您可以创建一个实现接口的匿名类Consumer
或使用 lambda 表达式,如下所示:
- 使用匿名内部类:
this.someWebClient = WebClient.builder()
.baseUrl(someConfiguration.getApiUrl())
.clientConnector(buildTimeoutConnector())
.defaultHeaders(new Consumer<HttpHeaders>() {
@Override
public void accept(HttpHeaders httpHeaders) {
httpHeaders.addAll(createHeaders(token));
}
})
.build();
- 使用 lambda:
this.someWebClient = WebClient.builder()
.baseUrl(someConfiguration.getApiUrl())
.clientConnector(buildTimeoutConnector())
.defaultHeaders(httpHeaders -> {
httpHeaders.addAll(createHeaders(token));
})
.build();
推荐阅读
- javascript - 如何验证数组中的字母是否重复?
- postgresql - 无法以特定的数据库状态重新启动 Fusionauth
- java - JavaFX 使 ListView 在触摸屏上可滚动
- javascript - 事件处理匿名方法中的javascript分配
- c++ - 在 C++ 中前向声明模板变量
- django - 无需迭代即可通过关系查询 Django 多对多?
- javascript - 如何通过使用lodash提取键值将数组转换为不同的数组
- c# - 从由 DataTable 填充的列表中删除字符(OleDB 读取 Excel 文件)
- swift - iOS datatask 命令行消息
- .htaccess - 使用 .htaccess 将根目录重定向到两个不同的目录