This commit is contained in:
六如
2024-10-31 09:36:48 +08:00
parent 08f708d8a4
commit 0e29510d0e
58 changed files with 3569 additions and 16 deletions

View File

@@ -63,6 +63,11 @@ public class ApiInfoDTO implements Serializable {
*/
private Integer isNeedToken;
/**
* 是否有公共响应参数
*/
private Integer hasCommonResponse;
private Integer status;
public String buildApiNameVersion() {

View File

@@ -71,6 +71,11 @@ public class ApiInfo {
*/
private Integer isNeedToken;
/**
* 是否有公共响应参数
*/
private Integer hasCommonResponse;
/**
* 注册来源1-系统注册,2-手动注册
*/

View File

@@ -0,0 +1,22 @@
package com.gitee.sop.gateway.response;
/**
* 没有公共返回结果
*
* @author 六如
*/
public class NoCommonResponse extends BaseResponse {
public static NoCommonResponse success(Object data) {
NoCommonResponse apiResponse = new NoCommonResponse();
apiResponse.setCode(SUCCESS_CODE);
apiResponse.setMsg(SUCCESS_MSG);
apiResponse.setData(data);
return apiResponse;
}
@Override
public boolean needWrap() {
return false;
}
}

View File

@@ -1,5 +1,8 @@
package com.gitee.sop.gateway.response;
import com.alibaba.fastjson2.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;
/**
* @author 六如
*/
@@ -9,4 +12,9 @@ public interface Response {
Object getData();
@JSONField(serialize = false)
@JsonIgnore
default boolean needWrap() {
return true;
}
}

View File

@@ -110,8 +110,12 @@ public class ParamExecutorImpl implements ParamExecutor<HttpServletRequest, Http
FileData fileData = (FileData) data;
ResponseUtil.writerFile(fileData, response);
} else {
// 此处还可以判断charset,返回xml格式
ResponseUtil.writerText(apiRequestContext, apiResponse, response);
Object responseData = apiResponse;
// 不需要公共参数
if (!apiResponse.needWrap()) {
responseData = data;
}
ResponseUtil.writerText(apiRequestContext, responseData, response);
}
}
}

View File

@@ -1,10 +1,12 @@
package com.gitee.sop.gateway.service;
import com.gitee.sop.gateway.common.ApiInfoDTO;
import com.gitee.sop.gateway.common.enums.YesOrNoEnum;
import com.gitee.sop.gateway.config.ApiConfig;
import com.gitee.sop.gateway.request.ApiRequestContext;
import com.gitee.sop.gateway.response.ApiResponse;
import com.gitee.sop.gateway.response.ApiResponseLower;
import com.gitee.sop.gateway.response.NoCommonResponse;
import com.gitee.sop.gateway.response.Response;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -22,6 +24,11 @@ public class ResultWrapperImpl implements ResultWrapper {
@Override
public Response wrap(ApiRequestContext context, ApiInfoDTO apiInfoDTO, Object result) {
Integer hasCommonResponse = apiInfoDTO.getHasCommonResponse();
// 不需要公共返回参数
if (YesOrNoEnum.of(hasCommonResponse) == YesOrNoEnum.NO) {
return NoCommonResponse.success(result);
}
if (Objects.equals(apiConfig.getFieldLowercase(), true)) {
return ApiResponseLower.success(result);
} else {

View File

@@ -1,7 +1,5 @@
package com.gitee.sop.gateway.util;
import com.alibaba.fastjson2.JSON;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.gitee.sop.gateway.request.ApiRequest;
import com.gitee.sop.gateway.request.ApiRequestContext;
import com.gitee.sop.gateway.request.RequestFormatEnum;
@@ -17,7 +15,6 @@ import java.io.InputStream;
* @author 六如
*/
public class ResponseUtil {
private static final XmlMapper XML_MAPPER = new XmlMapper();
public static void writerFile(FileData fileData, HttpServletResponse response) throws IOException {
InputStream inputStream = fileData.getInputStream();
@@ -37,11 +34,11 @@ public class ResponseUtil {
String format = apiRequest.getFormat();
if (RequestFormatEnum.of(format) == RequestFormatEnum.XML) {
response.setContentType(MediaType.APPLICATION_XML_VALUE);
String xml = XML_MAPPER.writeValueAsString(apiResponse);
String xml = XmlUtil.toXml(apiResponse);
response.getWriter().write(xml);
} else {
response.setContentType(MediaType.APPLICATION_JSON_VALUE);
String json = JSON.toJSONString(apiResponse);
String json = JsonUtil.toJSONString(apiResponse);
response.getWriter().write(json);
}
}

View File

@@ -0,0 +1,18 @@
package com.gitee.sop.gateway.util;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
/**
* @author 六如
*/
public class XmlUtil {
private static final XmlMapper XML_MAPPER = new XmlMapper();
public static String toXml(Object object) throws JsonProcessingException {
return XML_MAPPER.writeValueAsString(object);
}
}