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
This commit is contained in:
Brian Clozel
2022-05-04 11:14:10 +02:00
parent 81a03f2b2d
commit 85ad5bbfb4
8 changed files with 18 additions and 18 deletions

View File

@@ -55,12 +55,12 @@ final class WebTestClientTransport implements GraphQlTransport {
public Mono<GraphQlResponse> execute(GraphQlRequest request) {
Map<String, Object> 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();

View File

@@ -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()

View File

@@ -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<GraphQlResponse> 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)

View File

@@ -94,7 +94,7 @@ public class GraphQlHttpHandler {
return accepted;
}
}
return MediaType.APPLICATION_GRAPHQL;
return MediaType.APPLICATION_JSON;
}
}

View File

@@ -117,7 +117,7 @@ public class GraphQlHttpHandler {
return accepted;
}
}
return MediaType.APPLICATION_GRAPHQL;
return MediaType.APPLICATION_JSON;
}
}

View File

@@ -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);
}

View File

@@ -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}"));

View File

@@ -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);