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 fa5df6a81c5e5e00836645fa1e60dfbdb90ea5a8..5368b08f7e9ce4a6824e4587bb64db3a1af493a3 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 a663d58edbe5c1450db978abda1f6ce3510d2e51..699c1cd657c66f3413a071f486dfc993b4a16bcb 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.warn("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 c6860d8738db42609bef5662137ebefd9a1b29d5..45c88bbf1a8ed52cacdc54d4b10c4c09aeff6d01 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,22 @@ 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; + /** + * Content-Type格式说明: + * {@see Content-Type} + * type/subtype(;parameter)? type + */ + String unParseContentType = request.getContentType(); + //如果是浏览器get请求过来,取出来的contentType是null + if (unParseContentType == null) { + unParseContentType = MediaType.APPLICATION_FORM_URLENCODED_VALUE; } + // issues/I57ZG2 + // 解析contentType 格式: appliation/json;charset=utf-8 + String[] contentTypeArr = unParseContentType.split(";"); + String contentType = contentTypeArr[0]; + Map params = null; //如果是application/json请求,不管接口规定的content-type是什么,接口都可以访问,且请求参数都以json body 为准 if (contentType.equalsIgnoreCase(MediaType.APPLICATION_JSON_VALUE)) {