From 85ad5bbfb40006a39caa9f58395ab115e1d2e418 Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Wed, 4 May 2022 11:14:10 +0200 Subject: [PATCH] Rever to "application/json" as default MIME type As of #108, the `"application/graphql+json"` media type is supported and has been made the default. It seems that it is not ready for adoption now; so while we'll keep supporting it, this commit reverts back to `"application/json"` as the default media type for servers and clients. Closes gh-375 --- .../graphql/test/tester/WebTestClientTransport.java | 6 +++--- .../client/DefaultRSocketGraphQlClientBuilder.java | 2 +- .../graphql/client/HttpGraphQlTransport.java | 4 ++-- .../graphql/server/webflux/GraphQlHttpHandler.java | 2 +- .../graphql/server/webmvc/GraphQlHttpHandler.java | 2 +- .../graphql/client/WebGraphQlClientBuilderTests.java | 6 +++--- .../graphql/server/webflux/GraphQlHttpHandlerTests.java | 8 ++++---- .../graphql/server/webmvc/GraphQlHttpHandlerTests.java | 6 +++--- 8 files changed, 18 insertions(+), 18 deletions(-) diff --git a/spring-graphql-test/src/main/java/org/springframework/graphql/test/tester/WebTestClientTransport.java b/spring-graphql-test/src/main/java/org/springframework/graphql/test/tester/WebTestClientTransport.java index b98b1dc7..90469759 100644 --- a/spring-graphql-test/src/main/java/org/springframework/graphql/test/tester/WebTestClientTransport.java +++ b/spring-graphql-test/src/main/java/org/springframework/graphql/test/tester/WebTestClientTransport.java @@ -55,12 +55,12 @@ final class WebTestClientTransport implements GraphQlTransport { public Mono execute(GraphQlRequest request) { Map responseMap = this.webTestClient.post() - .contentType(MediaType.APPLICATION_GRAPHQL) - .accept(MediaType.APPLICATION_GRAPHQL) + .contentType(MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON) .bodyValue(request.toMap()) .exchange() .expectStatus().isOk() - .expectHeader().contentTypeCompatibleWith(MediaType.APPLICATION_GRAPHQL) + .expectHeader().contentTypeCompatibleWith(MediaType.APPLICATION_JSON) .expectBody(MAP_TYPE) .returnResult() .getResponseBody(); diff --git a/spring-graphql/src/main/java/org/springframework/graphql/client/DefaultRSocketGraphQlClientBuilder.java b/spring-graphql/src/main/java/org/springframework/graphql/client/DefaultRSocketGraphQlClientBuilder.java index 92a0cb4d..094c8ba7 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/client/DefaultRSocketGraphQlClientBuilder.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/client/DefaultRSocketGraphQlClientBuilder.java @@ -61,7 +61,7 @@ final class DefaultRSocketGraphQlClientBuilder } private static RSocketRequester.Builder initRSocketRequestBuilder() { - RSocketRequester.Builder requesterBuilder = RSocketRequester.builder().dataMimeType(MimeTypeUtils.APPLICATION_GRAPHQL); + RSocketRequester.Builder requesterBuilder = RSocketRequester.builder().dataMimeType(MimeTypeUtils.APPLICATION_JSON); if (jackson2Present) { requesterBuilder.rsocketStrategies( RSocketStrategies.builder() diff --git a/spring-graphql/src/main/java/org/springframework/graphql/client/HttpGraphQlTransport.java b/spring-graphql/src/main/java/org/springframework/graphql/client/HttpGraphQlTransport.java index a59b9e93..c82f8bbc 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/client/HttpGraphQlTransport.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/client/HttpGraphQlTransport.java @@ -60,7 +60,7 @@ final class HttpGraphQlTransport implements GraphQlTransport { HttpHeaders headers = new HttpHeaders(); webClient.mutate().defaultHeaders(headers::putAll); MediaType contentType = headers.getContentType(); - return (contentType != null ? contentType : MediaType.APPLICATION_GRAPHQL); + return (contentType != null ? contentType : MediaType.APPLICATION_JSON); } @@ -68,7 +68,7 @@ final class HttpGraphQlTransport implements GraphQlTransport { public Mono execute(GraphQlRequest request) { return this.webClient.post() .contentType(this.contentType) - .accept(MediaType.APPLICATION_GRAPHQL, MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON, MediaType.APPLICATION_GRAPHQL) .bodyValue(request.toMap()) .retrieve() .bodyToMono(MAP_TYPE) diff --git a/spring-graphql/src/main/java/org/springframework/graphql/server/webflux/GraphQlHttpHandler.java b/spring-graphql/src/main/java/org/springframework/graphql/server/webflux/GraphQlHttpHandler.java index 5b051e6e..e3bccd29 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/server/webflux/GraphQlHttpHandler.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/server/webflux/GraphQlHttpHandler.java @@ -94,7 +94,7 @@ public class GraphQlHttpHandler { return accepted; } } - return MediaType.APPLICATION_GRAPHQL; + return MediaType.APPLICATION_JSON; } } diff --git a/spring-graphql/src/main/java/org/springframework/graphql/server/webmvc/GraphQlHttpHandler.java b/spring-graphql/src/main/java/org/springframework/graphql/server/webmvc/GraphQlHttpHandler.java index 3b12b3de..4b8eced7 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/server/webmvc/GraphQlHttpHandler.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/server/webmvc/GraphQlHttpHandler.java @@ -117,7 +117,7 @@ public class GraphQlHttpHandler { return accepted; } } - return MediaType.APPLICATION_GRAPHQL; + return MediaType.APPLICATION_JSON; } } diff --git a/spring-graphql/src/test/java/org/springframework/graphql/client/WebGraphQlClientBuilderTests.java b/spring-graphql/src/test/java/org/springframework/graphql/client/WebGraphQlClientBuilderTests.java index 8e9331a3..1f2c480b 100644 --- a/spring-graphql/src/test/java/org/springframework/graphql/client/WebGraphQlClientBuilderTests.java +++ b/spring-graphql/src/test/java/org/springframework/graphql/client/WebGraphQlClientBuilderTests.java @@ -183,18 +183,18 @@ public class WebGraphQlClientBuilderTests { setup.initBuilder().build().document(DOCUMENT).execute().block(TIMEOUT); WebGraphQlRequest request = setup.getActualRequest(); - assertThat(request.getHeaders().getContentType()).isEqualTo(MediaType.APPLICATION_GRAPHQL); + assertThat(request.getHeaders().getContentType()).isEqualTo(MediaType.APPLICATION_JSON); } @Test void contentTypeOverride() { HttpBuilderSetup setup = new HttpBuilderSetup(); - setup.initBuilder().header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).build() + setup.initBuilder().header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_GRAPHQL_VALUE).build() .document(DOCUMENT).execute().block(TIMEOUT); WebGraphQlRequest request = setup.getActualRequest(); - assertThat(request.getHeaders().getContentType()).isEqualTo(MediaType.APPLICATION_JSON); + assertThat(request.getHeaders().getContentType()).isEqualTo(MediaType.APPLICATION_GRAPHQL); } diff --git a/spring-graphql/src/test/java/org/springframework/graphql/server/webflux/GraphQlHttpHandlerTests.java b/spring-graphql/src/test/java/org/springframework/graphql/server/webflux/GraphQlHttpHandlerTests.java index 694f1283..83484b66 100644 --- a/spring-graphql/src/test/java/org/springframework/graphql/server/webflux/GraphQlHttpHandlerTests.java +++ b/spring-graphql/src/test/java/org/springframework/graphql/server/webflux/GraphQlHttpHandlerTests.java @@ -51,14 +51,14 @@ public class GraphQlHttpHandlerTests { @Test - void shouldProduceApplicationGraphQlByDefault() { + void shouldProduceApplicationJsonByDefault() { MockServerHttpRequest httpRequest = MockServerHttpRequest.post("/") - .contentType(MediaType.APPLICATION_GRAPHQL).accept(MediaType.ALL).build(); + .contentType(MediaType.APPLICATION_JSON).accept(MediaType.ALL).build(); MockServerHttpResponse httpResponse = handleRequest( httpRequest, this.greetingHandler, Collections.singletonMap("query", "{greeting}")); - assertThat(httpResponse.getHeaders().getContentType()).isEqualTo(MediaType.APPLICATION_GRAPHQL); + assertThat(httpResponse.getHeaders().getContentType()).isEqualTo(MediaType.APPLICATION_JSON); } @Test @@ -75,7 +75,7 @@ public class GraphQlHttpHandlerTests { @Test void shouldProduceApplicationJson() { MockServerHttpRequest httpRequest = MockServerHttpRequest.post("/") - .contentType(MediaType.APPLICATION_GRAPHQL).accept(MediaType.APPLICATION_JSON).build(); + .contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON).build(); MockServerHttpResponse httpResponse = handleRequest( httpRequest, this.greetingHandler, Collections.singletonMap("query", "{greeting}")); diff --git a/spring-graphql/src/test/java/org/springframework/graphql/server/webmvc/GraphQlHttpHandlerTests.java b/spring-graphql/src/test/java/org/springframework/graphql/server/webmvc/GraphQlHttpHandlerTests.java index fcab7679..ef9b1a05 100644 --- a/spring-graphql/src/test/java/org/springframework/graphql/server/webmvc/GraphQlHttpHandlerTests.java +++ b/spring-graphql/src/test/java/org/springframework/graphql/server/webmvc/GraphQlHttpHandlerTests.java @@ -56,10 +56,10 @@ public class GraphQlHttpHandlerTests { .queryFetcher("greeting", (env) -> "Hello").toHttpHandler(); @Test - void shouldProduceApplicationGraphQlByDefault() throws Exception { + void shouldProduceApplicationJsonByDefault() throws Exception { MockHttpServletRequest servletRequest = createServletRequest("{\"query\":\"{ greeting }\"}", "*/*"); MockHttpServletResponse servletResponse = handleRequest(servletRequest, this.greetingHandler); - assertThat(servletResponse.getContentType()).isEqualTo(MediaType.APPLICATION_GRAPHQL_VALUE); + assertThat(servletResponse.getContentType()).isEqualTo(MediaType.APPLICATION_JSON_VALUE); } @Test @@ -111,7 +111,7 @@ public class GraphQlHttpHandlerTests { private MockHttpServletRequest createServletRequest(String query, String accept) { MockHttpServletRequest servletRequest = new MockHttpServletRequest("POST", "/"); - servletRequest.setContentType(MediaType.APPLICATION_GRAPHQL_VALUE); + servletRequest.setContentType(MediaType.APPLICATION_JSON_VALUE); servletRequest.setContent(query.getBytes(StandardCharsets.UTF_8)); servletRequest.addHeader("Accept", accept); servletRequest.setAsyncSupported(true);