diff --git a/spring-graphql/src/main/java/org/springframework/graphql/server/webflux/AbstractGraphQlHttpHandler.java b/spring-graphql/src/main/java/org/springframework/graphql/server/webflux/AbstractGraphQlHttpHandler.java index f0a0631db..82d5793aa 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/server/webflux/AbstractGraphQlHttpHandler.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/server/webflux/AbstractGraphQlHttpHandler.java @@ -52,6 +52,7 @@ public abstract class AbstractGraphQlHttpHandler { protected final Log logger = LogFactory.getLog(getClass()); + private final static MediaType APPLICATION_GRAPHQL = MediaType.parseMediaType("application/graphql"); private final WebGraphQlHandler graphQlHandler; @@ -118,10 +119,9 @@ private static Mono applyApplicationGraphQlFallback( String contentTypeHeader = request.headers().firstHeader(HttpHeaders.CONTENT_TYPE); if (StringUtils.hasText(contentTypeHeader)) { MediaType contentType = MediaType.parseMediaType(contentTypeHeader); - MediaType applicationGraphQl = MediaType.parseMediaType("application/graphql"); // Spec requires application/json but some clients still use application/graphql - return applicationGraphQl.includes(contentType) ? ServerRequest.from(request) + return APPLICATION_GRAPHQL.includes(contentType) ? ServerRequest.from(request) .headers((headers) -> headers.setContentType(MediaType.APPLICATION_JSON)) .body(request.bodyToFlux(DataBuffer.class)) .build() diff --git a/spring-graphql/src/main/java/org/springframework/graphql/server/webflux/GraphQlRequestPredicates.java b/spring-graphql/src/main/java/org/springframework/graphql/server/webflux/GraphQlRequestPredicates.java index c478152e8..dc5c100b7 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/server/webflux/GraphQlRequestPredicates.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/server/webflux/GraphQlRequestPredicates.java @@ -73,6 +73,8 @@ public static RequestPredicate graphQlSse(String path) { private static class GraphQlHttpRequestPredicate implements RequestPredicate { + private final static MediaType APPLICATION_GRAPHQL = MediaType.parseMediaType("application/graphql"); + private final PathPattern pattern; private final List contentTypes; @@ -86,7 +88,7 @@ private static class GraphQlHttpRequestPredicate implements RequestPredicate { PathPatternParser parser = PathPatternParser.defaultInstance; path = parser.initFullPathPattern(path); this.pattern = parser.parse(path); - this.contentTypes = List.of(MediaType.APPLICATION_JSON, MediaType.parseMediaType("application/graphql")); + this.contentTypes = List.of(MediaType.APPLICATION_JSON, APPLICATION_GRAPHQL); this.acceptedMediaTypes = accepted; } diff --git a/spring-graphql/src/main/java/org/springframework/graphql/server/webmvc/AbstractGraphQlHttpHandler.java b/spring-graphql/src/main/java/org/springframework/graphql/server/webmvc/AbstractGraphQlHttpHandler.java index faba51c40..ead25bfa0 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/server/webmvc/AbstractGraphQlHttpHandler.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/server/webmvc/AbstractGraphQlHttpHandler.java @@ -67,6 +67,8 @@ public abstract class AbstractGraphQlHttpHandler { protected final Log logger = LogFactory.getLog(getClass()); + private final static MediaType APPLICATION_GRAPHQL = MediaType.parseMediaType("application/graphql"); + private final IdGenerator idGenerator = new AlternativeJdkIdGenerator(); private final WebGraphQlHandler graphQlHandler; @@ -174,9 +176,8 @@ private static SerializableGraphQlRequest applyApplicationGraphQlFallback( String contentTypeHeader = request.headers().firstHeader(HttpHeaders.CONTENT_TYPE); if (StringUtils.hasText(contentTypeHeader)) { MediaType contentType = MediaType.parseMediaType(contentTypeHeader); - MediaType applicationGraphQl = MediaType.parseMediaType("application/graphql"); // Spec requires application/json but some clients still use application/graphql - if (applicationGraphQl.includes(contentType)) { + if (APPLICATION_GRAPHQL.includes(contentType)) { try { request = ServerRequest.from(request) .headers((headers) -> headers.setContentType(MediaType.APPLICATION_JSON)) diff --git a/spring-graphql/src/main/java/org/springframework/graphql/server/webmvc/GraphQlRequestPredicates.java b/spring-graphql/src/main/java/org/springframework/graphql/server/webmvc/GraphQlRequestPredicates.java index a3190777a..1fd4484c8 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/server/webmvc/GraphQlRequestPredicates.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/server/webmvc/GraphQlRequestPredicates.java @@ -73,6 +73,8 @@ public static RequestPredicate graphQlSse(String path) { private static class GraphQlHttpRequestPredicate implements RequestPredicate { + private final static MediaType APPLICATION_GRAPHQL = MediaType.parseMediaType("application/graphql"); + private final PathPattern pattern; private final List contentTypes; @@ -86,7 +88,7 @@ private static class GraphQlHttpRequestPredicate implements RequestPredicate { PathPatternParser parser = PathPatternParser.defaultInstance; path = parser.initFullPathPattern(path); this.pattern = parser.parse(path); - this.contentTypes = List.of(MediaType.APPLICATION_JSON, MediaType.parseMediaType("application/graphql")); + this.contentTypes = List.of(MediaType.APPLICATION_JSON, APPLICATION_GRAPHQL); this.acceptedMediaTypes = accepted; }