Spring MVC REST
Last updated
Was this helpful?
Last updated
Was this helpful?
Spring bietet auch eine Lösung für REST-basierte Webservices (das Paket nennt sich spring-web
) - gehört zum Spring MVC Paket. Es tritt damit in Konkurrenz zu vielen in der Java-Welt existierenden REST-Implementierungen (u. a. ).
Wie bei Spring üblich wird viel mit Java-Annotationen gearbeitet:
@RestController
@RequestMapping
@RequestBody
@RequestParam
@ResponseBody
@ResponseStatus
funktioniert über die sog. HttpMessageConverter
JSON-based-Payload funktioniert out-of-the-box schon sehr gut
XML-base-Payload ... hier bietet sich JAXB an
andere Formate kann man natürlich auch verwenden, doch muß man sich dann evtl. selbst um das Marshalling/Unmarshalling kümmern
HttpEntity
repräsentiert eine HttpRequest (RequestEntity
) oder HttpResponse (= ResponseEntity
).
Eine @RestController
-Schnittstelle
kann auch als
modelliert werden. Verwendet man die FooEntity
Objekte, so hat man mehr Informationen (z. B. HTTP-Status-Code-Value und Http-Header).
Exceptions kann man direkt mit einem ResponseStatus (HTTP-Code) verknüpfen:
In der HttpServletResponse landet in diesem Fall automatisch ein HttpStatus.NOT_FOUND
(404).
Bei JAX-RS werden Webservices auf Interface-Level spezifiziert, bei Spring REST hingegen auch Class-Level.
Spring bietet mit dem RestTemplate
einen Client für REST-Services. Das besondere an diesem Ansatz ist, daß er mit verschiedenen unterliegenden HTTP-Bibliotheken funktioniert. Per Default (bei Nutzung über new RestTemplate()
) wird Standard JDK verwendet werden, um HTTP-Verbindungen zu initiieren (hier verwendet man System-Properties wie javax.net.ssl.trustStore
für die Konfiguration des Truststores). Man kann allerdings auch andere Bibliotheken nutzen ... wie hier z. B. Apache HttpComponents (HttpComponentsClientHttpRequestFactory
):
JAX-RS ist eine Java-Community Specifikation (), zu der es unterschiedliche Implementierungen gibt. liefert eine solche Implementierung. Spring REST implementiert NICHT den JAX-RS-Standard ... insofern handelt es sich um einen proprietären Ansatz.