Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Spring Data REST - Data Meets Hypermedia

3,236 views

Published on

Speakers: Roy Clarkson, Greg Turnquist
Data / Integration Track

Spring Data REST bridges the gap between the convenient data access layers provided by Spring Data's repository abstraction and hypermedia-driven REST web services, effectively taking out the boilerplate needed during implementation. This talk will give a quick overview of the project, explain fundamental design decisions and introduce new features of the latest version (namely service documentation and discoverability).

We will then look at the Spring-A-Gram sample application (built using Spring Data REST), focusing on the implementation of the frontend bits and pieces.

Published in: Software

Spring Data REST - Data Meets Hypermedia

  1. 1. Spring Data REST Data Meets Hypermedia By Greg Turnquist, Roy Clarkson, Oliver Gierke 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/
  2. 2. 2 Hypermedia is an adventure You only need a few tools But the results can be amazing
  3. 3. 3
  4. 4. 4
  5. 5. Oliver Gierke • Spring Data master • Spring HATEOAS • Jürgenized • Drums, music, … 5 @olivergierke
  6. 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. 7
  8. 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. 9. 9 HAL
  10. 10. 10 HAL Hypertext Application Language A lean hypermedia type application/hal+json Adopting HAL will make your API explorable, and its documentation easily discoverable from within the API itself. — Mike Kelly, HAL spec lead
  11. 11. 11 HAL haltalk.herokuapp.com
  12. 12. What is Spring Data REST? • What is ALPS? 12
  13. 13. Greg Turnquist • Spring Data REST • Spring Boot • Spring anything… • Getting started guides 13 Learning Spring Boot @gregturn
  14. 14. Architecture 14 GET /api Spring-a-Gram MVC SQL Spring Data Spring Mobile Spring Android Spring Hateoas Spring Framework
  15. 15. Demo: Spring-a-Gram 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/
  16. 16. Spring Data REST Data Meets Hypermedia By Greg Turnquist, Roy Clarkson, Oliver Gierke 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/
  17. 17. Hi, my name is Roy Clarkson 17 @royclarkson
  18. 18. 18 Demo Spring-a-Gram Demo
  19. 19. Built with Spring components 19 Spring for Android Spring HATEOAS
  20. 20. What problem are we trying to solve? 20
  21. 21. Android REST client • Consistent programming model • Powerful • Extensible 21
  22. 22. Spring Framework vs Spring for Android • Core • RestTemplate 22 http://projects.spring.io/spring-android https://github.com/spring-projects/spring-android
  23. 23. HTTP Methods • DELETE - delete(...) • GET - getForObject(...) • HEAD - headForHeaders(...) • OPTIONS - optionsForAllow(...) • POST - postForLocation(...) • PUT - put(...) • any HTTP operation - exchange(...) and execute(...) 23
  24. 24. RestTemplate Example RestTemplate restTemplate = new RestTemplate();! String url = "http://example.com/hotels/{hotel}/bookings/{booking}";! String result = restTemplate.getForObject(url, String.class, "42", “21”);! 24
  25. 25. 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
  26. 26. Spring for Android 2.0.0.M1 • Generics • OkHttp • API parity • Dependency updates • Bug fixes • Based on Spring Framework 3.2.x 26
  27. 27. Supported Android Versions 27 https://developer.android.com/about/dashboards/index.html
  28. 28. HTTP Clients • Native • Standard J2SE facilities (UrlConnection) • HttpComponents HttpClient 4.1 • Third Party • OkHttp • HttpComponents HttpClient 4.3 28
  29. 29. Generics 29 ParameterizedTypeReference<Resources<ItemResource>> typeRef =! new ParameterizedTypeReference<Resources<ItemResource>>() { };! ! ResponseEntity<Resources<ItemResource>> responseEntity = ! restTemplate.exchange(url, HttpMethod.GET, requestEntity, typeRef);
  30. 30. Project Roadmap • HttpComponents 4.3 • AsyncRestTemplate • Improved Spring Social integration • Improved Spring HATEOAS integration • WebSocket • Differential Sync 30
  31. 31. 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
  32. 32. Let’s look at some code! 32
  33. 33. 33 Want to see more? github.com/spring-projects/spring-data-rest github.com/spring-projects/spring-android github.com/SpringOne2GX-2014/spring-a-gram github.com/SpringOne2GX-2014/spring-a-gram-android Questions?

×