66 lines
3.0 KiB
Java
66 lines
3.0 KiB
Java
package com.bwie.gateway.utils;
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.bwie.common.result.Result;
|
|
import com.bwie.common.utils.StringUtils;
|
|
import lombok.extern.log4j.Log4j2;
|
|
import org.springframework.core.io.buffer.DataBuffer;
|
|
import org.springframework.http.HttpHeaders;
|
|
import org.springframework.http.HttpStatus;
|
|
import org.springframework.http.server.reactive.ServerHttpRequest;
|
|
import org.springframework.http.server.reactive.ServerHttpResponse;
|
|
import org.springframework.web.server.ServerWebExchange;
|
|
import reactor.core.publisher.Mono;
|
|
|
|
@Log4j2
|
|
public class GatewayUtils {
|
|
public static void addHeader(ServerHttpRequest.Builder mutate, String key, Object value) {
|
|
if (StringUtils.isEmpty(key)){
|
|
log.warn("添加请求头参数键不可以为空");
|
|
return;
|
|
}
|
|
if (value == null) {
|
|
log.warn("添加请求头参数:[{}]值为空",key);
|
|
return;
|
|
}
|
|
String valueStr = value.toString();
|
|
mutate.header(key, valueStr);
|
|
log.info("添加请求头参数成功 - 键:[{}] , 值:[{}]", key , value);
|
|
}
|
|
public static void removeHeader(ServerHttpRequest.Builder mutate, String key) {
|
|
if (StringUtils.isEmpty(key)){
|
|
log.warn("删除请求头参数键不可以为空");
|
|
return;
|
|
}
|
|
mutate.headers(httpHeaders -> httpHeaders.remove(key)).build();
|
|
log.info("删除请求头参数 - 键:[{}]",key);
|
|
}
|
|
public static Mono<Void> errorResponse(ServerWebExchange exchange, String msg, HttpStatus httpStatus) {
|
|
ServerHttpResponse response = exchange.getResponse();
|
|
//设置HTTP响应头状态
|
|
response.setStatusCode(httpStatus);
|
|
//设置HTTP响应头文本格式
|
|
response.getHeaders().add(HttpHeaders.CONTENT_TYPE, "application/json");
|
|
//定义响应内容
|
|
Result<?> result = Result.error(msg);
|
|
String resultJson = JSONObject.toJSONString(result);
|
|
log.error("[鉴权异常处理]请求路径:[{}],异常信息:[{}],响应结果:[{}]", exchange.getRequest().getPath(), msg, resultJson);
|
|
DataBuffer dataBuffer = response.bufferFactory().wrap(resultJson.getBytes());
|
|
//进行响应
|
|
return response.writeWith(Mono.just(dataBuffer));
|
|
}
|
|
public static Mono<Void> errorResponse(ServerWebExchange exchange, String msg) {
|
|
ServerHttpResponse response = exchange.getResponse();
|
|
response.setStatusCode(HttpStatus.OK);
|
|
response.getHeaders().add(HttpHeaders.CONTENT_TYPE, "application/json");
|
|
Result<?> result = Result.error(msg);
|
|
String resultJson = JSONObject.toJSONString(result);
|
|
log.error("[鉴权异常处理]请求路径:[{}],异常信息:[{}],响应结果:[{}]", exchange.getRequest().getPath(), msg, resultJson);
|
|
DataBuffer dataBuffer = response.bufferFactory().wrap(resultJson.getBytes());
|
|
//进行响应
|
|
return response.writeWith(Mono.just(dataBuffer));
|
|
}
|
|
|
|
|
|
}
|