問題描述:如標題
代碼:
@Slf4j
@Component
public class MyAuthorizationFilter implements GlobalFilter, Ordered {
private static final ObjectMapper OM = new ObjectMapper();
@Autowired
private AuthorClient authorClient;
@Override
public int getOrder() {
return -200;
}
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
URI uri = request.getURI();
GsonUtils.prettyInfoPrint(String.format("接收到請求:%s", uri.getPath()));
// 登陸 這邊時發起登錄請求,走本身這個網關,第一次會超時
Object data = authorClient.login(request);
return completeFilter(exchange.getResponse(), data);
}
private Mono<Void> completeFilter(ServerHttpResponse response, Object data) {
if (data != null) {
response.getHeaders().add("Content-Type",
MediaType.APPLICATION_JSON_UTF8_VALUE);
byte[] bytes = getDataAsBytes(data);
DataBuffer buffer = response.bufferFactory().wrap(bytes);
return response.writeWith(Flux.just(buffer));
}
return response.setComplete();
}
private byte[] getDataAsBytes(Object data) {
try {
return OM.writeValueAsBytes(data);
} catch (JsonProcessingException e) {
log.error("轉換 Object - Bytes 失敗", e);
}
return GsonUtils.toJson(Result.out(ResultCode.FAIL))
.getBytes(StandardCharsets.UTF_8);
}
}
代碼中 帶有註解的這一段是發起http請求代碼:有沒有人遇到過這樣的問題?求解!!!!!!