[[webmvc-client]]
= REST Clients

This section describes options for client-side access to REST endpoints.


[[webmvc-restclient]]
== `RestClient`

`RestClient` is a synchronous HTTP client that exposes a modern, fluent API.

See xref:integration/rest-clients.adoc#rest-restclient[`RestClient`] for more details.


[[webmvc-webclient]]
== `WebClient`

`WebClient` is a reactive client for making HTTP requests with a fluent API.

See xref:web/webflux-webclient.adoc[`WebClient`] for more details.


[[webmvc-resttemplate]]
== `RestTemplate`

`RestTemplate` is a synchronous client for making HTTP requests. It is the original
Spring REST client and exposes a simple, template-method API over underlying HTTP client
libraries.

See xref:integration/rest-clients.adoc#rest-resttemplate[`RestTemplate`] for details.


[[webmvc-http-interface]]
== HTTP Interface

The Spring Framework lets you define an HTTP service as a Java interface with HTTP
exchange methods. You can then generate a proxy that implements this interface and
performs the exchanges. This helps to simplify HTTP remote access and provides additional
flexibility for choosing an API style such as synchronous or reactive.

See xref:integration/rest-clients.adoc#rest-http-interface[HTTP Interface] for details.
