【问题标题】:how to set response value in springcloud gateway with GlobalFilter如何使用全局过滤器在 Spring Cloud Gateway 中设置响应值
【发布时间】:2018-06-27 13:14:50
【问题描述】:

如何使用 GlobalFilter 在 springcloud 网关中设置响应值? 我不知道在 ServerHttpResponse 中使用哪种方法。

public class AuthGlobalFilterFilter1 implements GlobalFilter, Ordered {

@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
    Object key =  exchange.getRequest().getQueryParams().get("key");
    if(key==null){
        ServerHttpResponse serverHttpResponse =  exchange.getResponse();
        serverHttpResponse.setStatusCode(HttpStatus.UNAUTHORIZED);
        //in here,I want set the value of response body.such as json string "{"status":401}"
        return exchange.getResponse().setComplete();
    }
    return chain.filter(exchange);
}

【问题讨论】:

    标签: spring-cloud gateway


    【解决方案1】:

    我已经解决了。

            ServerHttpResponse serverHttpResponse = exchange.getResponse();
        serverHttpResponse.setStatusCode(HttpStatus.OK);
        byte[] response =  "{\"status\":\"erroe\",\"message\":\"error happen\"}".getBytes(StandardCharsets.UTF_8);;
        DataBuffer buffer = exchange.getResponse().bufferFactory().wrap(response);
        return exchange.getResponse().writeWith(Flux.just(buffer));
    

    【讨论】:

      猜你喜欢
      • 2018-07-09
      • 2022-10-19
      • 2020-05-31
      • 2019-10-07
      • 2020-11-14
      • 2020-08-26
      • 2020-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多