给webclient添加参数

Adding parameters to webclient

我需要帮助!

这是我的网络客户端

private WebClient client = WebClient.create("http://address:port");

public Mono<RespDto> translate(AuthPrincipal principal, ReqDto dto, String token) {
    return client.get()
            .uri(uriBuilder -> uriBuilder
                    .path("/api")
                    .queryParam("id", dto.getId())
                    .queryParam("content", dto.getContent())
                    .queryParam("profile", dto.getProfile())
                    .build())
            .headers(h -> h.setBearerAuth(token.split(" ")[1]))
            .retrieve()
            .bodyToMono(RespDto.class);

}

这里是 api 我正在尝试检索

的控制器
@GetMapping("")
public Mono<?> trans(@AuthenticationPrincipal @ApiIgnore AuthPrincipal principal,
                     @Valid ReqDto reqDto) {
    return service.function(principal, reqDto);
}

所以我的问题是服务功能检查主体 ID 的权限,但我知道如何通过 webclient 传递 AuthPrincipal 对象...

请帮助菜鸟!

您已经使用以下代码行提供 Bearer 身份验证令牌:.headers(h -> h.setBearerAuth(token.split(" ")[1]))。如果这工作正常并且您能够针对目标 API 验证自己,那么 Spring 将在端点方法中注入 AuthPrincipal(假设您的 Spring 安全配置/自定义工作正常)。