Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Spring Data REST Data Meets Hypermedia

Roy Clarkson
September 10, 2014

Spring Data REST Data Meets Hypermedia

presented at SpringOne 2GX 2014

Roy Clarkson

September 10, 2014
Tweet

More Decks by Roy Clarkson

Other Decks in Programming

Transcript

  1. Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software,

    Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Data REST Data Meets Hypermedia By Greg Turnquist, Roy Clarkson, Oliver Gierke
  2. 2 Hypermedia is an adventure You only need a few

    tools But the results can be amazing
  3. 3

  4. 4

  5. Oliver Gierke • Spring Data master • Spring HATEOAS •

    Jürgenized • Drums, music, … 5 @olivergierke
  6. What is Spring Data REST? • Implements common patterns on

    top of repositories • Collection / Item resources • Association resources • Search resources • Supports • JPA, GemFire, Neo4j, MongoDB • Others are coming… 6
  7. 7

  8. What is Spring Data REST? • Leverages hypermedia & internet

    standards • HAL (draft) • ALPS (draft) • URI Templates (RFC 6570) • text/uri-list mediatype (RFC 2483) • profile link relation (RFC 6906) 8 You aren’t building a “Spring Data REST” app, but instead a RESTful standards- based app.
  9. 10 Hypertext Application Language A lean hypermedia type application/hal+json HAL

    Adopting HAL will make your API explorable, and its documentation easily discoverable from within the API itself. — Mike Kelly, HAL spec lead
  10. Greg Turnquist • Spring Data REST • Spring Boot •

    Spring anything… • Getting started guides 13 Learning Spring Boot @gregturn
  11. Architecture 14 GET /api Spring-a-Gram MVC SQL Spring Data Spring

    Mobile Spring Android Spring Hateoas Spring Framework
  12. Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software,

    Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Demo: Spring-a-Gram
  13. Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software,

    Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Data REST Data Meets Hypermedia By Greg Turnquist, Roy Clarkson, Oliver Gierke
  14. Spring Framework vs Spring for Android • Core • RestTemplate

    22 https://github.com/spring-projects/spring-android http://projects.spring.io/spring-android
  15. HTTP Methods • DELETE - delete(...) • GET - getForObject(...)

    • HEAD - headForHeaders(...) • OPTIONS - optionsForAllow(...) • POST - postForLocation(...) • PUT - put(...) • any HTTP operation - exchange(...) and execute(...) 23
  16. RestTemplate Example 24 RestTemplate restTemplate = new RestTemplate();! String url

    = "http://example.com/hotels/{hotel}/bookings/{booking}";! String result = restTemplate.getForObject(url, String.class, "42", “21”);!
  17. HTTP Message Converters • MappingJackson2HttpMessageConverter - object to JSON marshaling

    supported via the Jackson JSON Processor • GsonHttpMessageConverter - object to JSON marshaling supported via Google Gson • SimpleXmlHttpMessageConverter - object to XML marshaling supported via the Simple XML Serializer 25
  18. Spring for Android 2.0.0.M1 • Generics • OkHttp • API

    parity • Dependency updates • Bug fixes • Based on Spring Framework 3.2.x 26
  19. HTTP Clients • Native • Standard J2SE facilities (UrlConnection) •

    HttpComponents HttpClient 4.1 • Third Party • OkHttp • HttpComponents HttpClient 4.3 28
  20. Generics 29 ParameterizedTypeReference<Resources<ItemResource>> typeRef =! new ParameterizedTypeReference<Resources<ItemResource>>() { };! !

    ResponseEntity<Resources<ItemResource>> responseEntity = ! restTemplate.exchange(url, HttpMethod.GET, requestEntity, typeRef);
  21. Project Roadmap • HttpComponents 4.3 • AsyncRestTemplate • Improved Spring

    Social integration • Improved Spring HATEOAS integration • WebSocket • Differential Sync 30
  22. Getting Started Guides at http://spring.io/guides • Consuming a RESTful Web

    Service with Spring for Android • Consuming XML from a RESTful Web Service with Spring for Android • Building Android Projects with Gradle • Building Android Projects with Maven • Installing the Android Development Environment 31