$ unzip -oq spring-test-7.0.9.jar "org/springframework/test/web/servlet/client/RestTestClient*.class" $ javap -p org/springframework/test/web/servlet/client/RestTestClient.class public interface org.springframework.test.web.servlet.client.RestTestClient { public static final java.lang.String RESTTESTCLIENT_REQUEST_ID; public abstract org.springframework.test.web.servlet.client.RestTestClient$RequestHeadersUriSpec get(); public abstract org.springframework.test.web.servlet.client.RestTestClient$RequestHeadersUriSpec head(); public abstract org.springframework.test.web.servlet.client.RestTestClient$RequestBodyUriSpec post(); public abstract org.springframework.test.web.servlet.client.RestTestClient$RequestBodyUriSpec put(); public abstract org.springframework.test.web.servlet.client.RestTestClient$RequestBodyUriSpec patch(); public abstract org.springframework.test.web.servlet.client.RestTestClient$RequestHeadersUriSpec delete(); public abstract org.springframework.test.web.servlet.client.RestTestClient$RequestHeadersUriSpec options(); public abstract org.springframework.test.web.servlet.client.RestTestClient$RequestBodyUriSpec method(org.springframework.http.HttpMethod); public abstract > org.springframework.test.web.servlet.client.RestTestClient$Builder mutate(); public static org.springframework.test.web.servlet.client.RestTestClient$StandaloneSetupBuilder bindToController(java.lang.Object...); public static org.springframework.test.web.servlet.client.RestTestClient$RouterFunctionSetupBuilder bindToRouterFunction(org.springframework.web.servlet.function.RouterFunction...); public static org.springframework.test.web.servlet.client.RestTestClient$WebAppContextSetupBuilder bindToApplicationContext(org.springframework.web.context.WebApplicationContext); public static org.springframework.test.web.servlet.client.RestTestClient$Builder bindTo(org.springframework.test.web.servlet.MockMvc); public static org.springframework.test.web.servlet.client.RestTestClient$Builder bindToServer(); public static org.springframework.test.web.servlet.client.RestTestClient$Builder bindToServer(org.springframework.http.client.ClientHttpRequestFactory); } $ javap -p 'org/springframework/test/web/servlet/client/RestTestClient$RequestHeadersSpec.class' public interface org.springframework.test.web.servlet.client.RestTestClient$RequestHeadersSpec> { public abstract S accept(org.springframework.http.MediaType...); public abstract S acceptCharset(java.nio.charset.Charset...); public abstract S cookie(java.lang.String, java.lang.String); public abstract S cookies(java.util.function.Consumer>); public abstract S ifModifiedSince(java.time.ZonedDateTime); public abstract S ifNoneMatch(java.lang.String...); public abstract S header(java.lang.String, java.lang.String...); public abstract S headers(java.util.function.Consumer); public abstract S apiVersion(java.lang.Object); public abstract S attribute(java.lang.String, java.lang.Object); public abstract S attributes(java.util.function.Consumer>); public abstract org.springframework.test.web.servlet.client.RestTestClient$ResponseSpec exchange(); public abstract org.springframework.test.web.servlet.client.RestTestClient$ResponseSpec exchangeSuccessfully(); } $ javap -p 'org/springframework/test/web/servlet/client/RestTestClient$RequestBodySpec.class' public interface org.springframework.test.web.servlet.client.RestTestClient$RequestBodySpec extends org.springframework.test.web.servlet.client.RestTestClient$RequestHeadersSpec { public abstract org.springframework.test.web.servlet.client.RestTestClient$RequestBodySpec contentLength(long); public abstract org.springframework.test.web.servlet.client.RestTestClient$RequestBodySpec contentType(org.springframework.http.MediaType); public abstract org.springframework.test.web.servlet.client.RestTestClient$RequestHeadersSpec body(java.lang.Object); } # No multipart() method and no MultiValueMap body builder anywhere in the chain -- # body(Object) is the only way to set a request body. Confirms the multipart limitation directly # against the real class files instead of trusting a blog post's claim.