Merge pull request '当Nacos返回异常状态码时,且body数据类型为JSON时,从JSON中取出message字段作为异常响应信息,若不存在该字段则返回默认的错误信息' (#835) from otto/microservices:third-party-tool-forward into third-party-tool-forward
This commit is contained in:
commit
05533c9475
|
@ -76,17 +76,26 @@ public class GlobalResponseFilter implements GlobalFilter, Ordered {
|
|||
//释放掉内存
|
||||
DataBufferUtils.release(dataBuffer);
|
||||
String result = new String(bytes, StandardCharsets.UTF_8);
|
||||
if (!JSON.isValid(result)) {
|
||||
synchronousSink.next(result);
|
||||
return;
|
||||
}
|
||||
synchronousSink.next(result);
|
||||
return;
|
||||
}
|
||||
synchronousSink.complete();
|
||||
|
||||
}).flatMap(resBody -> {
|
||||
}).flatMap(resStr -> {
|
||||
// 保留原始状态码
|
||||
originalResponse.setStatusCode(HttpStatus.OK);
|
||||
byte[] bytes = JSON.toJSONBytes(AjaxResult.error(resBody));
|
||||
String errMsg;
|
||||
if (!JSON.isValid(resStr)) {
|
||||
errMsg = resStr;
|
||||
} else {
|
||||
JSONObject resJson = JSONObject.parseObject(resStr);
|
||||
if (resJson.containsKey("message")) {
|
||||
errMsg = resJson.getString("message");
|
||||
} else {
|
||||
errMsg = ExceptionMsgConstants.SYSTEM_EXEC_ERROR;
|
||||
}
|
||||
}
|
||||
byte[] bytes = JSON.toJSONBytes(AjaxResult.error(errMsg));
|
||||
getHeaders().setContentLength(bytes.length);
|
||||
DataBuffer buffer = bufferFactory.wrap(bytes);
|
||||
return super.writeWith(Mono.just(buffer));
|
||||
|
|
Loading…
Reference in New Issue