From 9aa9a83ece81e67659a051d568f92f6bdead0f16 Mon Sep 17 00:00:00 2001 From: "Gavin (Yan) Chen" Date: Mon, 18 Nov 2019 20:06:50 -0500 Subject: [PATCH] fixes #117 (#118) * fixes #117 * fixes #117 * add one more fix for audit the request validation result --- .../com/networknt/openapi/RequestValidator.java | 14 ++++++++------ .../com/networknt/openapi/ValidatorHandler.java | 6 ++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/openapi-validator/src/main/java/com/networknt/openapi/RequestValidator.java b/openapi-validator/src/main/java/com/networknt/openapi/RequestValidator.java index 3d703669..9d7dce43 100644 --- a/openapi-validator/src/main/java/com/networknt/openapi/RequestValidator.java +++ b/openapi-validator/src/main/java/com/networknt/openapi/RequestValidator.java @@ -27,6 +27,7 @@ import java.util.Optional; import java.util.Set; +import io.undertow.util.Headers; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -84,12 +85,13 @@ public Status validateRequest(final NormalisedPath requestPath, HttpServerExchan Status status = validateRequestParameters(exchange, requestPath, openApiOperation); if(status != null) return status; - - Object body = exchange.getAttachment(BodyHandler.REQUEST_BODY); - // skip the body validation if body parser is not in the request chain. - if(body == null && ValidatorHandler.config.skipBodyValidation) return null; - status = validateRequestBody(body, openApiOperation); - + String contentType = exchange.getRequestHeaders().getFirst(Headers.CONTENT_TYPE); + if (contentType==null || contentType.startsWith("application/json")) { + Object body = exchange.getAttachment(BodyHandler.REQUEST_BODY); + // skip the body validation if body parser is not in the request chain. + if(body == null && ValidatorHandler.config.skipBodyValidation) return null; + status = validateRequestBody(body, openApiOperation); + } return status; } diff --git a/openapi-validator/src/main/java/com/networknt/openapi/ValidatorHandler.java b/openapi-validator/src/main/java/com/networknt/openapi/ValidatorHandler.java index ec66e381..817460ab 100644 --- a/openapi-validator/src/main/java/com/networknt/openapi/ValidatorHandler.java +++ b/openapi-validator/src/main/java/com/networknt/openapi/ValidatorHandler.java @@ -81,15 +81,13 @@ public void handleRequest(final HttpServerExchange exchange) throws Exception { setExchangeStatus(exchange, STATUS_MISSING_OPENAPI_OPERATION); return; } - Status status = requestValidator.validateRequest(requestPath, exchange, openApiOperation); if(status != null) { - exchange.setStatusCode(status.getStatusCode()); - status.setDescription(status.getDescription().replaceAll("\\\\", "\\\\\\\\")); - exchange.getResponseSender().send(status.toString()); + setExchangeStatus(exchange, status.getCode()); if(config.logError) logger.error("ValidationError:" + status.toString()); return; } + if(config.validateResponse) { validateResponse(exchange, openApiOperation); }