From 02186bf1ea52940e89496c544da260feab7ab04e Mon Sep 17 00:00:00 2001 From: fuzi1996 Date: Fri, 20 May 2022 21:48:59 +0800 Subject: [PATCH 1/2] bug(service):issues/I57ZG2 --- .../dbapi/basic/filter/ApiAuthFilter.java | 3 +-- .../dbapi/basic/service/ApiConfigService.java | 6 +++++- .../dbapi/basic/servlet/APIServlet.java | 16 ++++++++++++---- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiAuthFilter.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiAuthFilter.java index fa5df6a..5368b08 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiAuthFilter.java +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiAuthFilter.java @@ -58,7 +58,6 @@ public class ApiAuthFilter implements Filter { // 如果是私有接口,校验权限 if (config.getPrevilege() == 0) { String tokenStr = request.getHeader("Authorization"); -// log.debug(tokenStr); if (StringUtils.isBlank(tokenStr)) { response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); response.getWriter().append(JSON.toJSONString(ResponseDto.fail("No Token!"))); @@ -95,7 +94,7 @@ public class ApiAuthFilter implements Filter { } catch (Exception e) { response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); response.getWriter().append(JSON.toJSONString(ResponseDto.fail(e.toString()))); - log.error(e.toString()); + log.error(e.getMessage(),e); } finally { if (response.getWriter() != null) { diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/ApiConfigService.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/ApiConfigService.java index a663d58..4575eb0 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/ApiConfigService.java +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/ApiConfigService.java @@ -217,8 +217,12 @@ public class ApiConfigService { */ @Cacheable(value = "api", key = "#path", unless = "#result == null") public ApiConfig getConfig(String path) { - log.info("get api config from db"); + log.info("get [{}] api config from db",path); ApiConfig apiConfig = apiConfigMapper.selectByPathOnline(path); + if(Objects.isNull(apiConfig)){ + log.info("can't get [{}] api config from db",path); + return null; + } List apiSqls = apiSqlMapper.selectByApiId(apiConfig.getId()); apiConfig.setSqlList(apiSqls); List alarms = alarmMapper.selectByApiId(apiConfig.getId()); diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/servlet/APIServlet.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/servlet/APIServlet.java index c6860d8..c8aa4fa 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/servlet/APIServlet.java +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/servlet/APIServlet.java @@ -22,6 +22,8 @@ import com.gitee.freakchicken.dbapi.basic.util.SqlEngineUtil; import com.github.freakchick.orange.SqlMeta; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.http.entity.ContentType; +import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; @@ -204,12 +206,18 @@ public class APIServlet extends HttpServlet { } private Map getParams(HttpServletRequest request, ApiConfig apiConfig) { - String contentType = request.getContentType(); - //如果是浏览器get请求过来,取出来的contentType是null - if (contentType == null) { - contentType = MediaType.APPLICATION_FORM_URLENCODED_VALUE; + // type/subtype(;parameter)? type + String unParseContentType = request.getContentType(); + //如果是浏览器get请求过来,取出来的contentType是null + if (unParseContentType == null) { + unParseContentType = MediaType.APPLICATION_FORM_URLENCODED_VALUE; } + // issues/I57ZG2 + // 解析contentType + String[] contentTypeArr = unParseContentType.split(";"); + String contentType = contentTypeArr[0]; + Map params = null; //如果是application/json请求,不管接口规定的content-type是什么,接口都可以访问,且请求参数都以json body 为准 if (contentType.equalsIgnoreCase(MediaType.APPLICATION_JSON_VALUE)) { -- Gitee From 4d327a8671902aca922c7cfbfd79f2b89254f289 Mon Sep 17 00:00:00 2001 From: fuzi1996 Date: Sat, 21 May 2022 11:01:06 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix(service):issues/I57ZG2=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=A2=9D=E5=A4=96=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dbapi/basic/service/ApiConfigService.java | 2 +- .../freakchicken/dbapi/basic/servlet/APIServlet.java | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/ApiConfigService.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/ApiConfigService.java index 4575eb0..699c1cd 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/ApiConfigService.java +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/service/ApiConfigService.java @@ -220,7 +220,7 @@ public class ApiConfigService { log.info("get [{}] api config from db",path); ApiConfig apiConfig = apiConfigMapper.selectByPathOnline(path); if(Objects.isNull(apiConfig)){ - log.info("can't get [{}] api config from db",path); + log.warn("can't get [{}] api config from db",path); return null; } List apiSqls = apiSqlMapper.selectByApiId(apiConfig.getId()); diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/servlet/APIServlet.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/servlet/APIServlet.java index c8aa4fa..45c88bb 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/servlet/APIServlet.java +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/servlet/APIServlet.java @@ -206,7 +206,11 @@ public class APIServlet extends HttpServlet { } private Map getParams(HttpServletRequest request, ApiConfig apiConfig) { - // type/subtype(;parameter)? type + /** + * Content-Type格式说明: + * {@see Content-Type} + * type/subtype(;parameter)? type + */ String unParseContentType = request.getContentType(); //如果是浏览器get请求过来,取出来的contentType是null @@ -214,7 +218,7 @@ public class APIServlet extends HttpServlet { unParseContentType = MediaType.APPLICATION_FORM_URLENCODED_VALUE; } // issues/I57ZG2 - // 解析contentType + // 解析contentType 格式: appliation/json;charset=utf-8 String[] contentTypeArr = unParseContentType.split(";"); String contentType = contentTypeArr[0]; -- Gitee