SlideShare a Scribd company logo
1 of 91
Download to read offline
GregLTurnquist.com/springone2020
Building Flexible APIs
with Spring HATEOAS
September 2–3, 2020
springone.io
1
GregLTurnquist.com/springone2020
Who am I?
GregLTurnquist.com/springone2020
Who am I?
GregLTurnquist.com/springone2020
Who am I?
bit.ly/hacking-with-spring-boot
GregLTurnquist.com/springone2020
Who am I?
bit.ly/hacking-with-spring-boot
● Principal developer on
the Spring team
● Nashville JUG co-founder
● Committer & Project
Lead for several Spring
projects
● YouTube/GregTurnquist
GregLTurnquist.com/springone2020
Let’s talk about…APIs!
GregLTurnquist.com/springone2020
What is an API?
GregLTurnquist.com/springone2020
What is an API?
● Place to get a little JSON/XML/whatever?
GregLTurnquist.com/springone2020
What is an API?
● Place to get a little JSON/XML/whatever?
● Way to interact with the app?
GregLTurnquist.com/springone2020
What is an API?
● Place to get a little JSON/XML/whatever?
● Way to interact with the app?
● Means to extract value from another app to help your own app?
GregLTurnquist.com/springone2020
What is an API?
● Place to get a little JSON/XML/whatever?
● Way to interact with the app?
● Means to extract value from another app to help your own app?
Let’s dig in and discover what it means to have a flexible API!
GregLTurnquist.com/springone2020
Simple API
6
● Spring MVC
● Simple
● Clear separation between layers
GregLTurnquist.com/springone2020
Simple API
6
● Spring MVC
● Simple
● Clear separation between layers
GregLTurnquist.com/springone2020
Simple API
6
● Spring MVC
● Simple
● Clear separation between layers
GregLTurnquist.com/springone2020
Simple API
6
● Spring MVC
● Simple
● Clear separation between layers
GregLTurnquist.com/springone2020
Simple API
6
● Spring MVC
● Simple
● Clear separation between layers
GregLTurnquist.com/springone2020
Simple API
{
"id": 0,
"name": "Frodo",
"role": "ring bearer"
}
6
GregLTurnquist.com/springone2020
Simple API
{
"id": 0,
"name": "Frodo",
"role": "ring bearer"
}
6
● Data and…
GregLTurnquist.com/springone2020
Simple API
{
"id": 0,
"name": "Frodo",
"role": "ring bearer"
}
6
● Data and…
● …nothing else!
GregLTurnquist.com/springone2020
Simple API
{
"id": 0,
"name": "Frodo",
"role": "ring bearer"
}
6
● Data and…
● …nothing else!
● Some value, but what about…
GregLTurnquist.com/springone2020
Simple API
{
"id": 0,
"name": "Frodo",
"role": "ring bearer"
}
6
● Data and…
● …nothing else!
● Some value, but what about…
● …updates?
GregLTurnquist.com/springone2020
Simple API
{
"id": 0,
"name": "Frodo",
"role": "ring bearer"
}
6
● Data and…
● …nothing else!
● Some value, but what about…
● …updates?
● …breaking changes?
GregLTurnquist.com/springone2020
Simple API
{
"id": 0,
"name": "Frodo",
"role": "ring bearer"
}
6
● Data and…
● …nothing else!
● Some value, but what about…
● …updates?
● …breaking changes?
● …backwards compatibility?
GregLTurnquist.com/springone2020
What happens when…
6
GregLTurnquist.com/springone2020
What happens when…
6
GregLTurnquist.com/springone2020
What happens when you serve this…
{
"id": 0,
"firstName": "Frodo",
"lastName": "Baggins",
"role": "ring bearer"
}
6
GregLTurnquist.com/springone2020
…but older clients try this?
6
GregLTurnquist.com/springone2020
…but older clients try this?
6
● What now?
GregLTurnquist.com/springone2020
…but older clients try this?
6
● What now?
● Tell users to just use your new API?
GregLTurnquist.com/springone2020
…but older clients try this?
6
● What now?
● Tell users to just use your new API?
● Roll out another version?
GregLTurnquist.com/springone2020
…but older clients try this?
6
● What now?
● Tell users to just use your new API?
● Roll out another version?
● Handle this AND the new format?
GregLTurnquist.com/springone2020
What about versioning?
6
https://www.infoq.com/news/2013/12/api-versioning/
● Knot = Single version of API
● P2P = Multiple versions
● Compatible = One API supports
multiple versions
GregLTurnquist.com/springone2020
What about versioning?
6
It is always possible for some unexpected reason to come along that requires a completely
different API, especially when the semantics of the interface change or security issues require the
abandonment of previously deployed software. My point was that there is no need to anticipate
such world-breaking changes with a version ID. We have the hostname for that. What you are
creating is not a new version of the API, but a new system with a new brand.
On the Web, we call that a new website. Websites don’t come with version numbers attached
because they never need to. Neither should a RESTful API. A RESTful API (done right) is just a
website for clients with a limited vocabulary.
—Dr. Roy Fielding
“
GregLTurnquist.com/springone2020
How rough can deprecating APIs be?
6
http://bit.ly/deprecating-apis
GregLTurnquist.com/springone2020
Just do this…
6
GregLTurnquist.com/springone2020
Just do this…
6
● “Never delete a
column”
GregLTurnquist.com/springone2020
Just do this…
6
● “Never delete a
column”
● Handle new
clients
GregLTurnquist.com/springone2020
Just do this…
6
● “Never delete a
column”
● Handle new
clients
● Support old
clients
GregLTurnquist.com/springone2020
Just do this…
6
● “Never delete a
column”
● Handle new
clients
● Support old
clients
● Everyone wins!
GregLTurnquist.com/springone2020
What else do you need?
GregLTurnquist.com/springone2020
What else do you need?
● Hypermedia controls
GregLTurnquist.com/springone2020
What else do you need?
● Hypermedia controls
● Instead of telling someone how to use your API on a portal…
GregLTurnquist.com/springone2020
What else do you need?
● Hypermedia controls
● Instead of telling someone how to use your API on a portal…
● …give them the controls right in the API
GregLTurnquist.com/springone2020
What else do you need?
● Hypermedia controls
● Instead of telling someone how to use your API on a portal…
● …give them the controls right in the API
● …using standard media types
GregLTurnquist.com/springone2020
What else do you need?
● Hypermedia controls
● Instead of telling someone how to use your API on a portal…
● …give them the controls right in the API
● …using standard media types
● It’s how the web functions
GregLTurnquist.com/springone2020
What else do you need?
● Hypermedia controls
● Instead of telling someone how to use your API on a portal…
● …give them the controls right in the API
● …using standard media types
● It’s how the web functions
● It’s the reason the web succeeded
GregLTurnquist.com/springone2020
What else do you need?
● Hypermedia controls
● Instead of telling someone how to use your API on a portal…
● …give them the controls right in the API
● …using standard media types
● It’s how the web functions
● It’s the reason the web succeeded
● The reason everyone today builds web apps
GregLTurnquist.com/springone2020
Just migrate from this…
6
GregLTurnquist.com/springone2020
…to this!
6
GregLTurnquist.com/springone2020
…to this!
6
GregLTurnquist.com/springone2020
…to this!
6
GregLTurnquist.com/springone2020
…to this!
6
GregLTurnquist.com/springone2020
…to this!
6
GregLTurnquist.com/springone2020
…to this!
6
GregLTurnquist.com/springone2020
…to this!
6
GregLTurnquist.com/springone2020
…to this!
6
GregLTurnquist.com/springone2020
…to this!
6
GregLTurnquist.com/springone2020
{
"id": 0,
"firstName": "Frodo",
"lastName": "Baggins",
"role": "ring bearer",
"name": "Frodo Baggins",
"_links": {
"self": {
"href": "http://localhost:8080/rest/employees/0"
},
"employees": {
"href": "http://localhost:8080/rest/employees"
}
},
…
So you can do this!
6
● New clients
GregLTurnquist.com/springone2020
{
"id": 0,
"firstName": "Frodo",
"lastName": "Baggins",
"role": "ring bearer",
"name": "Frodo Baggins",
"_links": {
"self": {
"href": "http://localhost:8080/rest/employees/0"
},
"employees": {
"href": "http://localhost:8080/rest/employees"
}
},
…
So you can do this!
6
● New clients
● Old clients
GregLTurnquist.com/springone2020
{
"id": 0,
"firstName": "Frodo",
"lastName": "Baggins",
"role": "ring bearer",
"name": "Frodo Baggins",
"_links": {
"self": {
"href": "http://localhost:8080/rest/employees/0"
},
"employees": {
"href": "http://localhost:8080/rest/employees"
}
},
…
So you can do this!
6
● New clients
● Old clients
● Navigate between related
components
GregLTurnquist.com/springone2020
…and this
6
…
"_templates": {
"default": {
"method": "put",
"properties": [
{
"name": "firstName"
},
{
"name": "id",
"readOnly": true
},
{
"name": "lastName"
},
{
"name": "name"
},
{
"name": "role"
}
]}}}
● New clients
● Old clients
● Navigate between related
components
● Effect change
GregLTurnquist.com/springone2020
…
"_templates": {
"default": {
"method": "put",
"properties": [
{
"name": "firstName"
},
{
"name": "id",
"readOnly": true
},
{
"name": "lastName"
},
{
"name": "name"
},
{
"name": "role"
}
]}}}
…and this
6
● New clients
● Old clients
● Navigate between related
components
● Effect change
GregLTurnquist.com/springone2020
…
"_templates": {
"default": {
"method": "put",
"properties": [
{
"name": "firstName"
},
{
"name": "id",
"readOnly": true
},
{
"name": "lastName"
},
{
"name": "name"
},
{
"name": "role"
}
]}}}
…and this
6
● New clients
● Old clients
● Navigate between related
components
● Effect change (even for
old clients!)
GregLTurnquist.com/springone2020
Consuming Hypermedia
GregLTurnquist.com/springone2020
What if…
GregLTurnquist.com/springone2020
What if…
● You wanted your client to consume hypermedia?
GregLTurnquist.com/springone2020
What if…
● You wanted your client to consume hypermedia?
● Ready to register all those messy message converters?
GregLTurnquist.com/springone2020
What if…
● You wanted your client to consume hypermedia?
● Ready to register all those messy message converters?
● Do you really want to look up how to customize RestTemplate (or
WebClient) to handle HAL, HAL-FORMS, etc., etc., etc.?
GregLTurnquist.com/springone2020
What if…
● You wanted your client to consume hypermedia?
● Ready to register all those messy message converters?
● Do you really want to look up how to customize RestTemplate (or
WebClient) to handle HAL, HAL-FORMS, etc., etc., etc.?
GregLTurnquist.com/springone2020
What if…
● You wanted your client to consume hypermedia?
● Ready to register all those messy message converters?
● Do you really want to look up how to customize RestTemplate (or
WebClient) to handle HAL, HAL-FORMS, etc., etc., etc.?
Spring HATEOAS has you covered!
GregLTurnquist.com/springone2020
RestTemplate support
GregLTurnquist.com/springone2020
RestTemplate support
GregLTurnquist.com/springone2020
RestTemplate support
GregLTurnquist.com/springone2020
RestTemplate support
GregLTurnquist.com/springone2020
RestTemplate support
GregLTurnquist.com/springone2020
We also support WebClient
● Inject WebClient.Builder into your app
● …and .build()!
GregLTurnquist.com/springone2020
We also support WebClient
● Inject WebClient.Builder into your app
● …and .build()!
GregLTurnquist.com/springone2020
We also support WebClient
GregLTurnquist.com/springone2020
We also support WebClient
GregLTurnquist.com/springone2020
We also support WebClient
GregLTurnquist.com/springone2020
We also support WebClient
😳Not in production!
GregLTurnquist.com/springone2020
Additional Features
GregLTurnquist.com/springone2020
Additional Features
● Spring WebFlux support
GregLTurnquist.com/springone2020
Additional Features
● Spring WebFlux support
● More media types (UBER+JSON, Collection+JSON, Your Own ™)
GregLTurnquist.com/springone2020
Additional Features
● Spring WebFlux support
● More media types (UBER+JSON, Collection+JSON, Your Own ™)
● Standardized errors with Problem+JSON (RFC-7807)
GregLTurnquist.com/springone2020
Additional Features
● Spring WebFlux support
● More media types (UBER+JSON, Collection+JSON, Your Own ™)
● Standardized errors with Problem+JSON (RFC-7807)
● Lots of performance improvements
GregLTurnquist.com/springone2020
Additional Features
● Spring WebFlux support
● More media types (UBER+JSON, Collection+JSON, Your Own ™)
● Standardized errors with Problem+JSON (RFC-7807)
● Lots of performance improvements
● Increasing community involvement
● JSON:API, Siren media types
● Document updates
● New ideas!
GregLTurnquist.com/springone2020
Additional Features
● Spring WebFlux support
● More media types (UBER+JSON, Collection+JSON, Your Own ™)
● Standardized errors with Problem+JSON (RFC-7807)
● Lots of performance improvements
● Increasing community involvement
● JSON:API, Siren media types
● Document updates
● New ideas!
GregLTurnquist.com/springone2020
Additional Features
● Spring WebFlux support
● More media types (UBER+JSON, Collection+JSON, Your Own ™)
● Standardized errors with Problem+JSON (RFC-7807)
● Lots of performance improvements
● Increasing community involvement
● JSON:API, Siren media types
● Document updates
● New ideas!
GregLTurnquist.com/springone2020
Additional Features
● Spring WebFlux support
● More media types (UBER+JSON, Collection+JSON, Your Own ™)
● Standardized errors with Problem+JSON (RFC-7807)
● Lots of performance improvements
● Increasing community involvement
● JSON:API, Siren media types
● Document updates
● New ideas!
Check it out!
GregLTurnquist.com/springone2020
Thank you SpringOne 2020!
Join me on #session-building-flexible-apis-with-spring-hateoas
for Q&A
Follow us on twitter @SpringHATEOAS
Visit GregLTurnquist.com/springone2020 to WIN a
paperback+ebook copy of Hacking with Spring Boot 2.3

More Related Content

What's hot

Journey to the Cloud with Red Hat
Journey to the Cloud with Red HatJourney to the Cloud with Red Hat
Journey to the Cloud with Red HatKen Thompson
 
Cloud Architecture - Multi Cloud, Edge, On-Premise
Cloud Architecture - Multi Cloud, Edge, On-PremiseCloud Architecture - Multi Cloud, Edge, On-Premise
Cloud Architecture - Multi Cloud, Edge, On-PremiseAraf Karsh Hamid
 
"Certified Kubernetes Administrator Exam – how it was" by Andrii Fedenishin
"Certified Kubernetes Administrator Exam – how it was" by Andrii Fedenishin"Certified Kubernetes Administrator Exam – how it was" by Andrii Fedenishin
"Certified Kubernetes Administrator Exam – how it was" by Andrii FedenishinKatherine Golovinova
 
Sql server 2019 new features
Sql server 2019 new featuresSql server 2019 new features
Sql server 2019 new featuresGeorge Walters
 
Dell boomi interview questions
Dell boomi interview questionsDell boomi interview questions
Dell boomi interview questionsenrollmy training
 
AWS Webcast - Amazon RDS for Oracle: Best Practices and Migration
AWS Webcast - Amazon RDS for Oracle: Best Practices and Migration  AWS Webcast - Amazon RDS for Oracle: Best Practices and Migration
AWS Webcast - Amazon RDS for Oracle: Best Practices and Migration Amazon Web Services
 
Underrated AWS Security Controls ~ AWS Atlanta Summit 2022
Underrated AWS Security Controls ~ AWS Atlanta Summit 2022Underrated AWS Security Controls ~ AWS Atlanta Summit 2022
Underrated AWS Security Controls ~ AWS Atlanta Summit 2022Teri Radichel
 
database migration simple, cross-engine and cross-platform migrations with ...
database migration   simple, cross-engine and cross-platform migrations with ...database migration   simple, cross-engine and cross-platform migrations with ...
database migration simple, cross-engine and cross-platform migrations with ...Amazon Web Services
 
Fluentd and Kafka
Fluentd and KafkaFluentd and Kafka
Fluentd and KafkaN Masahiro
 
Migrating to MongoDB: Best Practices
Migrating to MongoDB: Best PracticesMigrating to MongoDB: Best Practices
Migrating to MongoDB: Best PracticesMongoDB
 
Visualization with Amazon QuickSight
Visualization with Amazon QuickSightVisualization with Amazon QuickSight
Visualization with Amazon QuickSightAmazon Web Services
 
Making Data Timelier and More Reliable with Lakehouse Technology
Making Data Timelier and More Reliable with Lakehouse TechnologyMaking Data Timelier and More Reliable with Lakehouse Technology
Making Data Timelier and More Reliable with Lakehouse TechnologyMatei Zaharia
 
Accelerate Your Cloud Migration Journey.pdf
Accelerate Your Cloud Migration Journey.pdfAccelerate Your Cloud Migration Journey.pdf
Accelerate Your Cloud Migration Journey.pdfAmazon Web Services
 
Big Data Redis Mongodb Dynamodb Sharding
Big Data Redis Mongodb Dynamodb ShardingBig Data Redis Mongodb Dynamodb Sharding
Big Data Redis Mongodb Dynamodb ShardingAraf Karsh Hamid
 
Presentation of Apache Cassandra
Presentation of Apache Cassandra Presentation of Apache Cassandra
Presentation of Apache Cassandra Nikiforos Botis
 
Introduction to Chaos Engineering with Microsoft Azure
Introduction to Chaos Engineering with Microsoft AzureIntroduction to Chaos Engineering with Microsoft Azure
Introduction to Chaos Engineering with Microsoft AzureAna Medina
 
Secrets in Kubernetes
Secrets in KubernetesSecrets in Kubernetes
Secrets in KubernetesJerry Jalava
 

What's hot (20)

Journey to the Cloud with Red Hat
Journey to the Cloud with Red HatJourney to the Cloud with Red Hat
Journey to the Cloud with Red Hat
 
Cloud Architecture - Multi Cloud, Edge, On-Premise
Cloud Architecture - Multi Cloud, Edge, On-PremiseCloud Architecture - Multi Cloud, Edge, On-Premise
Cloud Architecture - Multi Cloud, Edge, On-Premise
 
"Certified Kubernetes Administrator Exam – how it was" by Andrii Fedenishin
"Certified Kubernetes Administrator Exam – how it was" by Andrii Fedenishin"Certified Kubernetes Administrator Exam – how it was" by Andrii Fedenishin
"Certified Kubernetes Administrator Exam – how it was" by Andrii Fedenishin
 
Sql server 2019 new features
Sql server 2019 new featuresSql server 2019 new features
Sql server 2019 new features
 
Dell boomi interview questions
Dell boomi interview questionsDell boomi interview questions
Dell boomi interview questions
 
AWS Webcast - Amazon RDS for Oracle: Best Practices and Migration
AWS Webcast - Amazon RDS for Oracle: Best Practices and Migration  AWS Webcast - Amazon RDS for Oracle: Best Practices and Migration
AWS Webcast - Amazon RDS for Oracle: Best Practices and Migration
 
Underrated AWS Security Controls ~ AWS Atlanta Summit 2022
Underrated AWS Security Controls ~ AWS Atlanta Summit 2022Underrated AWS Security Controls ~ AWS Atlanta Summit 2022
Underrated AWS Security Controls ~ AWS Atlanta Summit 2022
 
database migration simple, cross-engine and cross-platform migrations with ...
database migration   simple, cross-engine and cross-platform migrations with ...database migration   simple, cross-engine and cross-platform migrations with ...
database migration simple, cross-engine and cross-platform migrations with ...
 
Fluentd and Kafka
Fluentd and KafkaFluentd and Kafka
Fluentd and Kafka
 
Migrating to MongoDB: Best Practices
Migrating to MongoDB: Best PracticesMigrating to MongoDB: Best Practices
Migrating to MongoDB: Best Practices
 
Visualization with Amazon QuickSight
Visualization with Amazon QuickSightVisualization with Amazon QuickSight
Visualization with Amazon QuickSight
 
Amazon QuickSight
Amazon QuickSightAmazon QuickSight
Amazon QuickSight
 
Making Data Timelier and More Reliable with Lakehouse Technology
Making Data Timelier and More Reliable with Lakehouse TechnologyMaking Data Timelier and More Reliable with Lakehouse Technology
Making Data Timelier and More Reliable with Lakehouse Technology
 
Accelerate Your Cloud Migration Journey.pdf
Accelerate Your Cloud Migration Journey.pdfAccelerate Your Cloud Migration Journey.pdf
Accelerate Your Cloud Migration Journey.pdf
 
Oracle Apex Overview
Oracle Apex OverviewOracle Apex Overview
Oracle Apex Overview
 
Big Data Redis Mongodb Dynamodb Sharding
Big Data Redis Mongodb Dynamodb ShardingBig Data Redis Mongodb Dynamodb Sharding
Big Data Redis Mongodb Dynamodb Sharding
 
Presentation of Apache Cassandra
Presentation of Apache Cassandra Presentation of Apache Cassandra
Presentation of Apache Cassandra
 
Introduction to Amazon EC2
Introduction to Amazon EC2Introduction to Amazon EC2
Introduction to Amazon EC2
 
Introduction to Chaos Engineering with Microsoft Azure
Introduction to Chaos Engineering with Microsoft AzureIntroduction to Chaos Engineering with Microsoft Azure
Introduction to Chaos Engineering with Microsoft Azure
 
Secrets in Kubernetes
Secrets in KubernetesSecrets in Kubernetes
Secrets in Kubernetes
 

Similar to Building Flexible APIs with Spring HATEOAS

The New Renaissance of JavaScript - SMX London 2019
The New Renaissance of JavaScript - SMX London 2019The New Renaissance of JavaScript - SMX London 2019
The New Renaissance of JavaScript - SMX London 2019Onely
 
The New Renaissance of JavaScript - SMX London 2019
The New Renaissance of JavaScript - SMX London 2019The New Renaissance of JavaScript - SMX London 2019
The New Renaissance of JavaScript - SMX London 2019Onely
 
Monitor all the thingz slideshare
Monitor all the thingz slideshareMonitor all the thingz slideshare
Monitor all the thingz slideshareSoluto
 
Ducksboard - Building an Internet startup in Spain (from a coder's point of v...
Ducksboard - Building an Internet startup in Spain (from a coder's point of v...Ducksboard - Building an Internet startup in Spain (from a coder's point of v...
Ducksboard - Building an Internet startup in Spain (from a coder's point of v...Ducksboard
 
Martin Splitt "Creating virtual worlds in the browser"
Martin Splitt "Creating virtual worlds in the browser"Martin Splitt "Creating virtual worlds in the browser"
Martin Splitt "Creating virtual worlds in the browser"Fwdays
 
Mobile Apps by Pure Go with Reverse Binding
Mobile Apps by Pure Go with Reverse BindingMobile Apps by Pure Go with Reverse Binding
Mobile Apps by Pure Go with Reverse BindingTakuya Ueda
 
Playwright: A New Test Automation Framework for the Modern Web
Playwright: A New Test Automation Framework for the Modern WebPlaywright: A New Test Automation Framework for the Modern Web
Playwright: A New Test Automation Framework for the Modern WebApplitools
 
Beyond Polymer - JUG Summer Camp - 2015-09-18
Beyond Polymer - JUG Summer Camp - 2015-09-18Beyond Polymer - JUG Summer Camp - 2015-09-18
Beyond Polymer - JUG Summer Camp - 2015-09-18Horacio Gonzalez
 
Progressing JavaScript and Apps the Web way…
 Progressing JavaScript and Apps the Web way…  Progressing JavaScript and Apps the Web way…
Progressing JavaScript and Apps the Web way… Christian Heilmann
 
Build and Deploy a Python Web App to Amazon in 30 Mins
Build and Deploy a Python Web App to Amazon in 30 MinsBuild and Deploy a Python Web App to Amazon in 30 Mins
Build and Deploy a Python Web App to Amazon in 30 MinsJeff Hull
 
APIdays Barcelona 2019 - Competing with an API giant, lessons learned with Ed...
APIdays Barcelona 2019 - Competing with an API giant, lessons learned with Ed...APIdays Barcelona 2019 - Competing with an API giant, lessons learned with Ed...
APIdays Barcelona 2019 - Competing with an API giant, lessons learned with Ed...apidays
 
Competing with an API giant, lessons learned: OpenCage vs. Google
Competing with an API giant, lessons learned: OpenCage vs. GoogleCompeting with an API giant, lessons learned: OpenCage vs. Google
Competing with an API giant, lessons learned: OpenCage vs. GoogleEd Freyfogle
 
Mobile Games Market Trends Q1 2018 from Priori Data
Mobile Games Market Trends Q1 2018 from Priori DataMobile Games Market Trends Q1 2018 from Priori Data
Mobile Games Market Trends Q1 2018 from Priori DataBenjamin Nolan
 
Enabling Microservice @ Orbitz - GOTO Chicago 2016
Enabling Microservice @ Orbitz - GOTO Chicago 2016Enabling Microservice @ Orbitz - GOTO Chicago 2016
Enabling Microservice @ Orbitz - GOTO Chicago 2016Steve Hoffman
 
How do you get started in AI?
How do you get started in AI?How do you get started in AI?
How do you get started in AI?Gordon Haff
 
Dos donts of js content optimisation - Digital Olympus 2018
Dos donts of js content optimisation - Digital Olympus 2018Dos donts of js content optimisation - Digital Olympus 2018
Dos donts of js content optimisation - Digital Olympus 2018Chris Green
 
Django 프로젝트 - heroku 배포하기
Django  프로젝트 - heroku 배포하기Django  프로젝트 - heroku 배포하기
Django 프로젝트 - heroku 배포하기Jessica Lee
 
Auditing smart contracts beyond code and into godmode backdoors
Auditing smart contracts   beyond code and into godmode backdoorsAuditing smart contracts   beyond code and into godmode backdoors
Auditing smart contracts beyond code and into godmode backdoorsBruno Skvorc
 
A Large-Scale Study of Test Coverage Evolution
A Large-Scale Study of Test Coverage EvolutionA Large-Scale Study of Test Coverage Evolution
A Large-Scale Study of Test Coverage Evolutionjon_bell
 

Similar to Building Flexible APIs with Spring HATEOAS (20)

The New Renaissance of JavaScript - SMX London 2019
The New Renaissance of JavaScript - SMX London 2019The New Renaissance of JavaScript - SMX London 2019
The New Renaissance of JavaScript - SMX London 2019
 
The New Renaissance of JavaScript - SMX London 2019
The New Renaissance of JavaScript - SMX London 2019The New Renaissance of JavaScript - SMX London 2019
The New Renaissance of JavaScript - SMX London 2019
 
shanghai
shanghaishanghai
shanghai
 
Monitor all the thingz slideshare
Monitor all the thingz slideshareMonitor all the thingz slideshare
Monitor all the thingz slideshare
 
Ducksboard - Building an Internet startup in Spain (from a coder's point of v...
Ducksboard - Building an Internet startup in Spain (from a coder's point of v...Ducksboard - Building an Internet startup in Spain (from a coder's point of v...
Ducksboard - Building an Internet startup in Spain (from a coder's point of v...
 
Martin Splitt "Creating virtual worlds in the browser"
Martin Splitt "Creating virtual worlds in the browser"Martin Splitt "Creating virtual worlds in the browser"
Martin Splitt "Creating virtual worlds in the browser"
 
Mobile Apps by Pure Go with Reverse Binding
Mobile Apps by Pure Go with Reverse BindingMobile Apps by Pure Go with Reverse Binding
Mobile Apps by Pure Go with Reverse Binding
 
Playwright: A New Test Automation Framework for the Modern Web
Playwright: A New Test Automation Framework for the Modern WebPlaywright: A New Test Automation Framework for the Modern Web
Playwright: A New Test Automation Framework for the Modern Web
 
Beyond Polymer - JUG Summer Camp - 2015-09-18
Beyond Polymer - JUG Summer Camp - 2015-09-18Beyond Polymer - JUG Summer Camp - 2015-09-18
Beyond Polymer - JUG Summer Camp - 2015-09-18
 
Progressing JavaScript and Apps the Web way…
 Progressing JavaScript and Apps the Web way…  Progressing JavaScript and Apps the Web way…
Progressing JavaScript and Apps the Web way…
 
Build and Deploy a Python Web App to Amazon in 30 Mins
Build and Deploy a Python Web App to Amazon in 30 MinsBuild and Deploy a Python Web App to Amazon in 30 Mins
Build and Deploy a Python Web App to Amazon in 30 Mins
 
APIdays Barcelona 2019 - Competing with an API giant, lessons learned with Ed...
APIdays Barcelona 2019 - Competing with an API giant, lessons learned with Ed...APIdays Barcelona 2019 - Competing with an API giant, lessons learned with Ed...
APIdays Barcelona 2019 - Competing with an API giant, lessons learned with Ed...
 
Competing with an API giant, lessons learned: OpenCage vs. Google
Competing with an API giant, lessons learned: OpenCage vs. GoogleCompeting with an API giant, lessons learned: OpenCage vs. Google
Competing with an API giant, lessons learned: OpenCage vs. Google
 
Mobile Games Market Trends Q1 2018 from Priori Data
Mobile Games Market Trends Q1 2018 from Priori DataMobile Games Market Trends Q1 2018 from Priori Data
Mobile Games Market Trends Q1 2018 from Priori Data
 
Enabling Microservice @ Orbitz - GOTO Chicago 2016
Enabling Microservice @ Orbitz - GOTO Chicago 2016Enabling Microservice @ Orbitz - GOTO Chicago 2016
Enabling Microservice @ Orbitz - GOTO Chicago 2016
 
How do you get started in AI?
How do you get started in AI?How do you get started in AI?
How do you get started in AI?
 
Dos donts of js content optimisation - Digital Olympus 2018
Dos donts of js content optimisation - Digital Olympus 2018Dos donts of js content optimisation - Digital Olympus 2018
Dos donts of js content optimisation - Digital Olympus 2018
 
Django 프로젝트 - heroku 배포하기
Django  프로젝트 - heroku 배포하기Django  프로젝트 - heroku 배포하기
Django 프로젝트 - heroku 배포하기
 
Auditing smart contracts beyond code and into godmode backdoors
Auditing smart contracts   beyond code and into godmode backdoorsAuditing smart contracts   beyond code and into godmode backdoors
Auditing smart contracts beyond code and into godmode backdoors
 
A Large-Scale Study of Test Coverage Evolution
A Large-Scale Study of Test Coverage EvolutionA Large-Scale Study of Test Coverage Evolution
A Large-Scale Study of Test Coverage Evolution
 

More from VMware Tanzu

What AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About ItWhat AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About ItVMware Tanzu
 
Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023VMware Tanzu
 
Enhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at ScaleEnhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at ScaleVMware Tanzu
 
Spring Update | July 2023
Spring Update | July 2023Spring Update | July 2023
Spring Update | July 2023VMware Tanzu
 
Platforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a ProductPlatforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a ProductVMware Tanzu
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready AppsVMware Tanzu
 
Spring Boot 3 And Beyond
Spring Boot 3 And BeyondSpring Boot 3 And Beyond
Spring Boot 3 And BeyondVMware Tanzu
 
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfSpring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfVMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023VMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023VMware Tanzu
 
tanzu_developer_connect.pptx
tanzu_developer_connect.pptxtanzu_developer_connect.pptx
tanzu_developer_connect.pptxVMware Tanzu
 
Tanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - FrenchTanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - FrenchVMware Tanzu
 
Tanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishTanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishVMware Tanzu
 
Virtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVirtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVMware Tanzu
 
Tanzu Developer Connect - French
Tanzu Developer Connect - FrenchTanzu Developer Connect - French
Tanzu Developer Connect - FrenchVMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023VMware Tanzu
 
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootSpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootVMware Tanzu
 
SpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software EngineerSpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software EngineerVMware Tanzu
 
SpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs PracticeSpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs PracticeVMware Tanzu
 
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense SolutionsSpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense SolutionsVMware Tanzu
 

More from VMware Tanzu (20)

What AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About ItWhat AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About It
 
Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023
 
Enhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at ScaleEnhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at Scale
 
Spring Update | July 2023
Spring Update | July 2023Spring Update | July 2023
Spring Update | July 2023
 
Platforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a ProductPlatforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a Product
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready Apps
 
Spring Boot 3 And Beyond
Spring Boot 3 And BeyondSpring Boot 3 And Beyond
Spring Boot 3 And Beyond
 
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfSpring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
 
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
 
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
 
tanzu_developer_connect.pptx
tanzu_developer_connect.pptxtanzu_developer_connect.pptx
tanzu_developer_connect.pptx
 
Tanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - FrenchTanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - French
 
Tanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishTanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - English
 
Virtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVirtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - English
 
Tanzu Developer Connect - French
Tanzu Developer Connect - FrenchTanzu Developer Connect - French
Tanzu Developer Connect - French
 
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
 
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootSpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
 
SpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software EngineerSpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software Engineer
 
SpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs PracticeSpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs Practice
 
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense SolutionsSpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
 

Recently uploaded

Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfLivetecs LLC
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 

Recently uploaded (20)

Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdf
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 

Building Flexible APIs with Spring HATEOAS