rest in practice
TRANSCRIPT
REST In Practice
Gaacutebor Toumlroumlk EPAMSzeged
GET
Introduction overview
Best practices
Java support
Agenda
Introduction
Roy T Fielding PhD dissertation 2000
Main characteristics Client-server Stateless Caching Layered architecture Code on demand URIs
REpresentational State Transfer
Levels of REST
Image c
ourt
esy
of
Mart
in F
ow
ler
Richardsonrsquos Maturity Model
Plain Old XML (over HTTP)
One URI one method
Level 0 Swamp of POX
POST appointmentService HTTP11
ltopenSlotRequest date=2010-01-04 doctor=mjonesgt
Level 0 POX request
HTTP11 200 OK
ltopenSlotListgt ltslot start=1400 end=1450gt ltdoctor id=mjonesgt ltslotgt ltslot start=1600 end=1650gt ltdoctor id=mjonesgt ltslotgtltopenSlotListgt
Level 0 POX response
POST appointmentService HTTP11
ltappointmentRequestgt ltslot doctor=mjones start=1400
end=1450gt ltpatient id=jsmithgtltappointmentRequestgt
Level 0 POX request
HTTP11 200 OK
ltappointmentgt ltslot doctor=mjones start=1400 end=1450gt ltpatient id=jsmithgtltappointmentgt
Level 0 POX response
Many URIs one method
Level 1 Resources
POST doctorsmjones HTTP11
ltopenSlotRequest date=2010-01-04gt
Level 1 Resources request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 1 Resources response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 1 Resources request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 1 Resources response
Many URIs many (HTTP) methods
This is what most call REST
Best practices follow
Level 2 Verbs
GET doctorsmjonesslotsdate=20100104ampstatus=open HTTP11
Level 2 Verbs request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 2 Verbs response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 2 Verbs request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 2 Verbs response
W3 bdquoCool URIs donrsquot changerdquovs
Roy Fielding bdquoA REST API must not define fixed resource names or hierarchiesrdquo
HATEOAS amp self-descriptive messages
Problems peoplersquos awareness tools
Level 3 HyperMedia
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
Introduction overview
Best practices
Java support
Agenda
Introduction
Roy T Fielding PhD dissertation 2000
Main characteristics Client-server Stateless Caching Layered architecture Code on demand URIs
REpresentational State Transfer
Levels of REST
Image c
ourt
esy
of
Mart
in F
ow
ler
Richardsonrsquos Maturity Model
Plain Old XML (over HTTP)
One URI one method
Level 0 Swamp of POX
POST appointmentService HTTP11
ltopenSlotRequest date=2010-01-04 doctor=mjonesgt
Level 0 POX request
HTTP11 200 OK
ltopenSlotListgt ltslot start=1400 end=1450gt ltdoctor id=mjonesgt ltslotgt ltslot start=1600 end=1650gt ltdoctor id=mjonesgt ltslotgtltopenSlotListgt
Level 0 POX response
POST appointmentService HTTP11
ltappointmentRequestgt ltslot doctor=mjones start=1400
end=1450gt ltpatient id=jsmithgtltappointmentRequestgt
Level 0 POX request
HTTP11 200 OK
ltappointmentgt ltslot doctor=mjones start=1400 end=1450gt ltpatient id=jsmithgtltappointmentgt
Level 0 POX response
Many URIs one method
Level 1 Resources
POST doctorsmjones HTTP11
ltopenSlotRequest date=2010-01-04gt
Level 1 Resources request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 1 Resources response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 1 Resources request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 1 Resources response
Many URIs many (HTTP) methods
This is what most call REST
Best practices follow
Level 2 Verbs
GET doctorsmjonesslotsdate=20100104ampstatus=open HTTP11
Level 2 Verbs request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 2 Verbs response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 2 Verbs request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 2 Verbs response
W3 bdquoCool URIs donrsquot changerdquovs
Roy Fielding bdquoA REST API must not define fixed resource names or hierarchiesrdquo
HATEOAS amp self-descriptive messages
Problems peoplersquos awareness tools
Level 3 HyperMedia
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
Introduction
Roy T Fielding PhD dissertation 2000
Main characteristics Client-server Stateless Caching Layered architecture Code on demand URIs
REpresentational State Transfer
Levels of REST
Image c
ourt
esy
of
Mart
in F
ow
ler
Richardsonrsquos Maturity Model
Plain Old XML (over HTTP)
One URI one method
Level 0 Swamp of POX
POST appointmentService HTTP11
ltopenSlotRequest date=2010-01-04 doctor=mjonesgt
Level 0 POX request
HTTP11 200 OK
ltopenSlotListgt ltslot start=1400 end=1450gt ltdoctor id=mjonesgt ltslotgt ltslot start=1600 end=1650gt ltdoctor id=mjonesgt ltslotgtltopenSlotListgt
Level 0 POX response
POST appointmentService HTTP11
ltappointmentRequestgt ltslot doctor=mjones start=1400
end=1450gt ltpatient id=jsmithgtltappointmentRequestgt
Level 0 POX request
HTTP11 200 OK
ltappointmentgt ltslot doctor=mjones start=1400 end=1450gt ltpatient id=jsmithgtltappointmentgt
Level 0 POX response
Many URIs one method
Level 1 Resources
POST doctorsmjones HTTP11
ltopenSlotRequest date=2010-01-04gt
Level 1 Resources request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 1 Resources response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 1 Resources request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 1 Resources response
Many URIs many (HTTP) methods
This is what most call REST
Best practices follow
Level 2 Verbs
GET doctorsmjonesslotsdate=20100104ampstatus=open HTTP11
Level 2 Verbs request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 2 Verbs response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 2 Verbs request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 2 Verbs response
W3 bdquoCool URIs donrsquot changerdquovs
Roy Fielding bdquoA REST API must not define fixed resource names or hierarchiesrdquo
HATEOAS amp self-descriptive messages
Problems peoplersquos awareness tools
Level 3 HyperMedia
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
Roy T Fielding PhD dissertation 2000
Main characteristics Client-server Stateless Caching Layered architecture Code on demand URIs
REpresentational State Transfer
Levels of REST
Image c
ourt
esy
of
Mart
in F
ow
ler
Richardsonrsquos Maturity Model
Plain Old XML (over HTTP)
One URI one method
Level 0 Swamp of POX
POST appointmentService HTTP11
ltopenSlotRequest date=2010-01-04 doctor=mjonesgt
Level 0 POX request
HTTP11 200 OK
ltopenSlotListgt ltslot start=1400 end=1450gt ltdoctor id=mjonesgt ltslotgt ltslot start=1600 end=1650gt ltdoctor id=mjonesgt ltslotgtltopenSlotListgt
Level 0 POX response
POST appointmentService HTTP11
ltappointmentRequestgt ltslot doctor=mjones start=1400
end=1450gt ltpatient id=jsmithgtltappointmentRequestgt
Level 0 POX request
HTTP11 200 OK
ltappointmentgt ltslot doctor=mjones start=1400 end=1450gt ltpatient id=jsmithgtltappointmentgt
Level 0 POX response
Many URIs one method
Level 1 Resources
POST doctorsmjones HTTP11
ltopenSlotRequest date=2010-01-04gt
Level 1 Resources request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 1 Resources response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 1 Resources request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 1 Resources response
Many URIs many (HTTP) methods
This is what most call REST
Best practices follow
Level 2 Verbs
GET doctorsmjonesslotsdate=20100104ampstatus=open HTTP11
Level 2 Verbs request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 2 Verbs response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 2 Verbs request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 2 Verbs response
W3 bdquoCool URIs donrsquot changerdquovs
Roy Fielding bdquoA REST API must not define fixed resource names or hierarchiesrdquo
HATEOAS amp self-descriptive messages
Problems peoplersquos awareness tools
Level 3 HyperMedia
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
Levels of REST
Image c
ourt
esy
of
Mart
in F
ow
ler
Richardsonrsquos Maturity Model
Plain Old XML (over HTTP)
One URI one method
Level 0 Swamp of POX
POST appointmentService HTTP11
ltopenSlotRequest date=2010-01-04 doctor=mjonesgt
Level 0 POX request
HTTP11 200 OK
ltopenSlotListgt ltslot start=1400 end=1450gt ltdoctor id=mjonesgt ltslotgt ltslot start=1600 end=1650gt ltdoctor id=mjonesgt ltslotgtltopenSlotListgt
Level 0 POX response
POST appointmentService HTTP11
ltappointmentRequestgt ltslot doctor=mjones start=1400
end=1450gt ltpatient id=jsmithgtltappointmentRequestgt
Level 0 POX request
HTTP11 200 OK
ltappointmentgt ltslot doctor=mjones start=1400 end=1450gt ltpatient id=jsmithgtltappointmentgt
Level 0 POX response
Many URIs one method
Level 1 Resources
POST doctorsmjones HTTP11
ltopenSlotRequest date=2010-01-04gt
Level 1 Resources request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 1 Resources response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 1 Resources request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 1 Resources response
Many URIs many (HTTP) methods
This is what most call REST
Best practices follow
Level 2 Verbs
GET doctorsmjonesslotsdate=20100104ampstatus=open HTTP11
Level 2 Verbs request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 2 Verbs response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 2 Verbs request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 2 Verbs response
W3 bdquoCool URIs donrsquot changerdquovs
Roy Fielding bdquoA REST API must not define fixed resource names or hierarchiesrdquo
HATEOAS amp self-descriptive messages
Problems peoplersquos awareness tools
Level 3 HyperMedia
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
Plain Old XML (over HTTP)
One URI one method
Level 0 Swamp of POX
POST appointmentService HTTP11
ltopenSlotRequest date=2010-01-04 doctor=mjonesgt
Level 0 POX request
HTTP11 200 OK
ltopenSlotListgt ltslot start=1400 end=1450gt ltdoctor id=mjonesgt ltslotgt ltslot start=1600 end=1650gt ltdoctor id=mjonesgt ltslotgtltopenSlotListgt
Level 0 POX response
POST appointmentService HTTP11
ltappointmentRequestgt ltslot doctor=mjones start=1400
end=1450gt ltpatient id=jsmithgtltappointmentRequestgt
Level 0 POX request
HTTP11 200 OK
ltappointmentgt ltslot doctor=mjones start=1400 end=1450gt ltpatient id=jsmithgtltappointmentgt
Level 0 POX response
Many URIs one method
Level 1 Resources
POST doctorsmjones HTTP11
ltopenSlotRequest date=2010-01-04gt
Level 1 Resources request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 1 Resources response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 1 Resources request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 1 Resources response
Many URIs many (HTTP) methods
This is what most call REST
Best practices follow
Level 2 Verbs
GET doctorsmjonesslotsdate=20100104ampstatus=open HTTP11
Level 2 Verbs request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 2 Verbs response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 2 Verbs request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 2 Verbs response
W3 bdquoCool URIs donrsquot changerdquovs
Roy Fielding bdquoA REST API must not define fixed resource names or hierarchiesrdquo
HATEOAS amp self-descriptive messages
Problems peoplersquos awareness tools
Level 3 HyperMedia
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
POST appointmentService HTTP11
ltopenSlotRequest date=2010-01-04 doctor=mjonesgt
Level 0 POX request
HTTP11 200 OK
ltopenSlotListgt ltslot start=1400 end=1450gt ltdoctor id=mjonesgt ltslotgt ltslot start=1600 end=1650gt ltdoctor id=mjonesgt ltslotgtltopenSlotListgt
Level 0 POX response
POST appointmentService HTTP11
ltappointmentRequestgt ltslot doctor=mjones start=1400
end=1450gt ltpatient id=jsmithgtltappointmentRequestgt
Level 0 POX request
HTTP11 200 OK
ltappointmentgt ltslot doctor=mjones start=1400 end=1450gt ltpatient id=jsmithgtltappointmentgt
Level 0 POX response
Many URIs one method
Level 1 Resources
POST doctorsmjones HTTP11
ltopenSlotRequest date=2010-01-04gt
Level 1 Resources request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 1 Resources response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 1 Resources request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 1 Resources response
Many URIs many (HTTP) methods
This is what most call REST
Best practices follow
Level 2 Verbs
GET doctorsmjonesslotsdate=20100104ampstatus=open HTTP11
Level 2 Verbs request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 2 Verbs response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 2 Verbs request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 2 Verbs response
W3 bdquoCool URIs donrsquot changerdquovs
Roy Fielding bdquoA REST API must not define fixed resource names or hierarchiesrdquo
HATEOAS amp self-descriptive messages
Problems peoplersquos awareness tools
Level 3 HyperMedia
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
HTTP11 200 OK
ltopenSlotListgt ltslot start=1400 end=1450gt ltdoctor id=mjonesgt ltslotgt ltslot start=1600 end=1650gt ltdoctor id=mjonesgt ltslotgtltopenSlotListgt
Level 0 POX response
POST appointmentService HTTP11
ltappointmentRequestgt ltslot doctor=mjones start=1400
end=1450gt ltpatient id=jsmithgtltappointmentRequestgt
Level 0 POX request
HTTP11 200 OK
ltappointmentgt ltslot doctor=mjones start=1400 end=1450gt ltpatient id=jsmithgtltappointmentgt
Level 0 POX response
Many URIs one method
Level 1 Resources
POST doctorsmjones HTTP11
ltopenSlotRequest date=2010-01-04gt
Level 1 Resources request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 1 Resources response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 1 Resources request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 1 Resources response
Many URIs many (HTTP) methods
This is what most call REST
Best practices follow
Level 2 Verbs
GET doctorsmjonesslotsdate=20100104ampstatus=open HTTP11
Level 2 Verbs request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 2 Verbs response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 2 Verbs request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 2 Verbs response
W3 bdquoCool URIs donrsquot changerdquovs
Roy Fielding bdquoA REST API must not define fixed resource names or hierarchiesrdquo
HATEOAS amp self-descriptive messages
Problems peoplersquos awareness tools
Level 3 HyperMedia
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
POST appointmentService HTTP11
ltappointmentRequestgt ltslot doctor=mjones start=1400
end=1450gt ltpatient id=jsmithgtltappointmentRequestgt
Level 0 POX request
HTTP11 200 OK
ltappointmentgt ltslot doctor=mjones start=1400 end=1450gt ltpatient id=jsmithgtltappointmentgt
Level 0 POX response
Many URIs one method
Level 1 Resources
POST doctorsmjones HTTP11
ltopenSlotRequest date=2010-01-04gt
Level 1 Resources request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 1 Resources response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 1 Resources request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 1 Resources response
Many URIs many (HTTP) methods
This is what most call REST
Best practices follow
Level 2 Verbs
GET doctorsmjonesslotsdate=20100104ampstatus=open HTTP11
Level 2 Verbs request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 2 Verbs response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 2 Verbs request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 2 Verbs response
W3 bdquoCool URIs donrsquot changerdquovs
Roy Fielding bdquoA REST API must not define fixed resource names or hierarchiesrdquo
HATEOAS amp self-descriptive messages
Problems peoplersquos awareness tools
Level 3 HyperMedia
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
HTTP11 200 OK
ltappointmentgt ltslot doctor=mjones start=1400 end=1450gt ltpatient id=jsmithgtltappointmentgt
Level 0 POX response
Many URIs one method
Level 1 Resources
POST doctorsmjones HTTP11
ltopenSlotRequest date=2010-01-04gt
Level 1 Resources request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 1 Resources response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 1 Resources request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 1 Resources response
Many URIs many (HTTP) methods
This is what most call REST
Best practices follow
Level 2 Verbs
GET doctorsmjonesslotsdate=20100104ampstatus=open HTTP11
Level 2 Verbs request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 2 Verbs response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 2 Verbs request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 2 Verbs response
W3 bdquoCool URIs donrsquot changerdquovs
Roy Fielding bdquoA REST API must not define fixed resource names or hierarchiesrdquo
HATEOAS amp self-descriptive messages
Problems peoplersquos awareness tools
Level 3 HyperMedia
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
Many URIs one method
Level 1 Resources
POST doctorsmjones HTTP11
ltopenSlotRequest date=2010-01-04gt
Level 1 Resources request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 1 Resources response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 1 Resources request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 1 Resources response
Many URIs many (HTTP) methods
This is what most call REST
Best practices follow
Level 2 Verbs
GET doctorsmjonesslotsdate=20100104ampstatus=open HTTP11
Level 2 Verbs request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 2 Verbs response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 2 Verbs request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 2 Verbs response
W3 bdquoCool URIs donrsquot changerdquovs
Roy Fielding bdquoA REST API must not define fixed resource names or hierarchiesrdquo
HATEOAS amp self-descriptive messages
Problems peoplersquos awareness tools
Level 3 HyperMedia
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
POST doctorsmjones HTTP11
ltopenSlotRequest date=2010-01-04gt
Level 1 Resources request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 1 Resources response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 1 Resources request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 1 Resources response
Many URIs many (HTTP) methods
This is what most call REST
Best practices follow
Level 2 Verbs
GET doctorsmjonesslotsdate=20100104ampstatus=open HTTP11
Level 2 Verbs request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 2 Verbs response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 2 Verbs request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 2 Verbs response
W3 bdquoCool URIs donrsquot changerdquovs
Roy Fielding bdquoA REST API must not define fixed resource names or hierarchiesrdquo
HATEOAS amp self-descriptive messages
Problems peoplersquos awareness tools
Level 3 HyperMedia
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 1 Resources response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 1 Resources request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 1 Resources response
Many URIs many (HTTP) methods
This is what most call REST
Best practices follow
Level 2 Verbs
GET doctorsmjonesslotsdate=20100104ampstatus=open HTTP11
Level 2 Verbs request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 2 Verbs response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 2 Verbs request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 2 Verbs response
W3 bdquoCool URIs donrsquot changerdquovs
Roy Fielding bdquoA REST API must not define fixed resource names or hierarchiesrdquo
HATEOAS amp self-descriptive messages
Problems peoplersquos awareness tools
Level 3 HyperMedia
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 1 Resources request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 1 Resources response
Many URIs many (HTTP) methods
This is what most call REST
Best practices follow
Level 2 Verbs
GET doctorsmjonesslotsdate=20100104ampstatus=open HTTP11
Level 2 Verbs request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 2 Verbs response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 2 Verbs request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 2 Verbs response
W3 bdquoCool URIs donrsquot changerdquovs
Roy Fielding bdquoA REST API must not define fixed resource names or hierarchiesrdquo
HATEOAS amp self-descriptive messages
Problems peoplersquos awareness tools
Level 3 HyperMedia
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 1 Resources response
Many URIs many (HTTP) methods
This is what most call REST
Best practices follow
Level 2 Verbs
GET doctorsmjonesslotsdate=20100104ampstatus=open HTTP11
Level 2 Verbs request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 2 Verbs response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 2 Verbs request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 2 Verbs response
W3 bdquoCool URIs donrsquot changerdquovs
Roy Fielding bdquoA REST API must not define fixed resource names or hierarchiesrdquo
HATEOAS amp self-descriptive messages
Problems peoplersquos awareness tools
Level 3 HyperMedia
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
Many URIs many (HTTP) methods
This is what most call REST
Best practices follow
Level 2 Verbs
GET doctorsmjonesslotsdate=20100104ampstatus=open HTTP11
Level 2 Verbs request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 2 Verbs response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 2 Verbs request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 2 Verbs response
W3 bdquoCool URIs donrsquot changerdquovs
Roy Fielding bdquoA REST API must not define fixed resource names or hierarchiesrdquo
HATEOAS amp self-descriptive messages
Problems peoplersquos awareness tools
Level 3 HyperMedia
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
GET doctorsmjonesslotsdate=20100104ampstatus=open HTTP11
Level 2 Verbs request
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 2 Verbs response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 2 Verbs request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 2 Verbs response
W3 bdquoCool URIs donrsquot changerdquovs
Roy Fielding bdquoA REST API must not define fixed resource names or hierarchiesrdquo
HATEOAS amp self-descriptive messages
Problems peoplersquos awareness tools
Level 3 HyperMedia
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjones
start=1400 end=1450gt ltslot id=5678 doctor=mjones
start=1600 end=1650gtltopenSlotListgt
Level 2 Verbs response
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 2 Verbs request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 2 Verbs response
W3 bdquoCool URIs donrsquot changerdquovs
Roy Fielding bdquoA REST API must not define fixed resource names or hierarchiesrdquo
HATEOAS amp self-descriptive messages
Problems peoplersquos awareness tools
Level 3 HyperMedia
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
POST slots1234 HTTP11
ltappointmentRequestgt ltpatient id=jsmithgtltappointmentRequestgt
Level 2 Verbs request
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 2 Verbs response
W3 bdquoCool URIs donrsquot changerdquovs
Roy Fielding bdquoA REST API must not define fixed resource names or hierarchiesrdquo
HATEOAS amp self-descriptive messages
Problems peoplersquos awareness tools
Level 3 HyperMedia
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
HTTP11 200 OK
ltappointment id=2468gt ltslot id=1234 doctor=mjones
start=1400 end=1450rdquogt ltpatient id=jsmithgtltappointmentgt
Level 2 Verbs response
W3 bdquoCool URIs donrsquot changerdquovs
Roy Fielding bdquoA REST API must not define fixed resource names or hierarchiesrdquo
HATEOAS amp self-descriptive messages
Problems peoplersquos awareness tools
Level 3 HyperMedia
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
W3 bdquoCool URIs donrsquot changerdquovs
Roy Fielding bdquoA REST API must not define fixed resource names or hierarchiesrdquo
HATEOAS amp self-descriptive messages
Problems peoplersquos awareness tools
Level 3 HyperMedia
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
HTTP11 200 OK
ltopenSlotListgt ltslot id=1234 doctor=mjonesrdquo start=1400 end=1450gt ltlink rel=linkrelsslotbook
uri=slots1234gt ltslotgt
hellipltopenSlotListgt
Level 3 Hypermedia response
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
HTTP11 201 CreatedLocation httpslots1234appointment
ltappointmentgt ltslot id=1234 hellipgt ltpatient id=jsmithgt ltlink rel=linkrelsappointmentcancel uri=slots1234appointmentgt ltlink rel=self uri=slots1234appointmentgtltappointmentgt
Level 3 Hypermedia response
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
Solves interop problems WSDL contractStrong typingClient- and server bindingsOperations (ie verbs)
WS- support (Security AtomicTransaction etc)
GETingPOSTing an XML
Many proxies block PUT Non-intuitive
SOAP
Level 0
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
Best practices
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
Resources vs actions
getTickets vs ticketsgetMusemTickets vs ticketstype=museum
Nouns vs verbs
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
Resource GET POST PUT DELETE
tickets List tickets Create a new ticket
Bulk update Delete all tickets
tickets123 Get the details of one ticket
Error Update a given ticket
Delete a given ticket
Base URL structure
Plural + IDCRUD-style operationsConcrete not abstract names
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
httpapicompanycomcafev1
Major rev only
Numbers not nicknames dates etc
Versioning
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
HTTP status codes
Short description Pointer to more information
Error handling
201
200
400204
401
403
404
503
405
500200 400
500
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
HTTP Status Code 401
status 401 messageAuthenticate code 12345 more infohttpdeveloperscompanycomdocserrors12345
Error handling
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
Ways to differentiate
tickets123jsontickets123format=jsonAccept applicationjson
Bonus applicationcompanyv1+json
Format handling
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
Paginationticketsoffset=50amplimit=25
Partial responseticketsfields=datelocation
Use defaults (documentation)
Pagination partial response defaults
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
Session management ndash REST is stateless
Caching ndash itrsquos very much encouraged
What if nouns are not appropriate ndash use verbs
The rest of REST ndash 21
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
Security ndash preferred is OAuth lot of BasicDigest over HTTPS in practice
Subdomains api developers for SDK
Clean REST
The rest of REST ndash 22
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
Java support
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
JSR 311 Java API for RESTful Web Services
Annotation-drivenGET Path PathParam Consumes
ImplementationsJersey Restlet RESTeasy Apache CXF
Jax-rs-hateoas
JAX-RS
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
jax-rs examplejava
JAX-RS
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
Spring MVC application essentially
Annotation-driven + XML configurationRequestMapping et al + view resolvers message converters et al
spring-hateoas
Spring MVC
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
spring mvc examplejava
Spring MVC
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
CRUD for JPA-entities using REST semantics
RestResource
Pagination and sorting support
spring-hateoas
Spring Data REST
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
spring data restjava
Spring Data REST
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
MVC vs Data REST in Spring
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
Roy Fieldingrsquos dissertation
REST in Practice from OrsquoReilly
Apigee blog amp video tutorials
Articles forums
Literature
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
Levels of REST ndash REST ne CRUD
Consistent view of best practices
Java support
Summary
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
Has been in the industry since late rsquo90s
Has been EPAM since 2009 acted as a Dev LeadPM now Solutions Architect
Has mobile + enterprise background
gaboritorokgmailcom
Gaacutebor Toumlroumlk
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-
Thank You
- REST In Practice
- Agenda
- Introduction
- REpresentational State Transfer
- Levels of REST
- Level 0 Swamp of POX
- Level 0 POX request
- Slide 8
- Level 0 POX request (2)
- Slide 10
- Level 1 Resources
- Level 1 Resources request
- Slide 13
- Level 1 Resources request (2)
- Slide 15
- Level 2 Verbs
- Level 2 Verbs request
- Slide 18
- Level 2 Verbs request (2)
- Slide 20
- Level 3 HyperMedia
- Slide 22
- Slide 23
- SOAP
- Best practices
- Nouns vs verbs
- Base URL structure
- Versioning
- Error handling
- Error handling (2)
- Format handling
- Pagination partial response defaults
- The rest of REST ndash 21
- The rest of REST ndash 22
- Java support
- JAX-RS
- JAX-RS (2)
- Spring MVC
- Spring MVC (2)
- Spring Data REST
- Spring Data REST (2)
- MVC vs Data REST in Spring
- Literature
- Summary
- Gaacutebor Toumlroumlk
- Thank You
-