Closes gh-1120
Signed-off-by: Mingyuan Wu <my.wu@outlook.com>
This commit is contained in:
Mingyuan Wu
2025-02-08 19:38:09 +08:00
committed by Brian Clozel
parent 00c53ecc62
commit dd1a6933dd
4 changed files with 11 additions and 6 deletions

View File

@@ -52,6 +52,7 @@ public abstract class AbstractGraphQlHttpHandler {
protected final Log logger = LogFactory.getLog(getClass());
private static final MediaType APPLICATION_GRAPHQL = MediaType.parseMediaType("application/graphql");
private final WebGraphQlHandler graphQlHandler;
@@ -118,10 +119,9 @@ public abstract class AbstractGraphQlHttpHandler {
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()

View File

@@ -73,6 +73,8 @@ public final class GraphQlRequestPredicates {
private static class GraphQlHttpRequestPredicate implements RequestPredicate {
private static final MediaType APPLICATION_GRAPHQL = MediaType.parseMediaType("application/graphql");
private final PathPattern pattern;
private final List<MediaType> contentTypes;
@@ -86,7 +88,7 @@ public final class GraphQlRequestPredicates {
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;
}

View File

@@ -67,6 +67,8 @@ public abstract class AbstractGraphQlHttpHandler {
protected final Log logger = LogFactory.getLog(getClass());
private static final MediaType APPLICATION_GRAPHQL = MediaType.parseMediaType("application/graphql");
private final IdGenerator idGenerator = new AlternativeJdkIdGenerator();
private final WebGraphQlHandler graphQlHandler;
@@ -174,9 +176,8 @@ public abstract class AbstractGraphQlHttpHandler {
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))

View File

@@ -73,6 +73,8 @@ public final class GraphQlRequestPredicates {
private static class GraphQlHttpRequestPredicate implements RequestPredicate {
private static final MediaType APPLICATION_GRAPHQL = MediaType.parseMediaType("application/graphql");
private final PathPattern pattern;
private final List<MediaType> contentTypes;
@@ -86,7 +88,7 @@ public final class GraphQlRequestPredicates {
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;
}