You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

处理请求时如何获取Router定义的Attribute属性?

获取Spring WebFlux路由属性的方法

你可以通过两种常见方式获取路由上定义的id属性:

方式一:使用ServerRequest的attribute方法(响应式风格)

该方法返回Mono<Optional<Object>>,适合保持响应式调用链:

public Mono<ServerResponse> handle(ServerRequest serverRequest) {
    // 获取"id"属性,若不存在则返回404
    return serverRequest.attribute("id")
        .map(id -> ServerResponse.ok().bodyValue("获取到的id属性值:" + id))
        .defaultIfEmpty(ServerResponse.notFound().build());
}

方式二:通过ServerWebExchange直接获取

从ServerRequest拿到ServerWebExchange后,可直接操作属性集合:

public Mono<ServerResponse> handle(ServerRequest serverRequest) {
    ServerWebExchange exchange = serverRequest.exchange();
    
    // 直接获取属性,不存在时返回null
    String id = (String) exchange.getAttribute("id");
    
    // 或者使用getAttributeOrDefault设置默认值,避免空指针
    String safeId = exchange.getAttributeOrDefault("id", "默认值");
    
    return ServerResponse.ok().bodyValue("获取到的id属性值:" + safeId);
}

说明

路由上通过.withAttribute("id", "demo")设置的属性,会被存入请求对应的ServerWebExchange属性集合中,因此上述两种方式都能正确获取到属性值。若属性可能不存在,推荐使用方式一的响应式处理,或方式二中的getAttributeOrDefault来避免空指针问题。

内容的提问来源于stack exchange,提问作者dengshaolin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 06:25:24