Slide 1

Slide 1 text

Content Negotiation for REST APIs

Slide 2

Slide 2 text


 @sferik

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

SOAP vs. REST

Slide 7

Slide 7 text

SOAP vs. REST SOAP POST /api.xml

Slide 8

Slide 8 text

SOAP vs. REST SOAP POST /api.xml

Slide 9

Slide 9 text

SOAP vs. REST SOAP POST /api.xml

Slide 10

Slide 10 text

SOAP vs. REST SOAP POST /api.xml REST GET /users/sferik.json

Slide 11

Slide 11 text

SOAP vs. REST SOAP POST /api.xml REST GET /users/sferik.json

Slide 12

Slide 12 text

SOAP vs. REST SOAP POST /api.xml REST GET /users/sferik.json

Slide 13

Slide 13 text

SOAP vs. REST SOAP POST /api.xml REST GET /users/sferik.json

Slide 14

Slide 14 text

FILE NAME EXTENSIONS

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

RESOURCE VS. REPRESENTATION

Slide 17

Slide 17 text

XML REPRESENTATION GET /users/sferik.xml
 
 
 sferik
 Erik


Slide 18

Slide 18 text

JSON REPRESENTATION GET /users/sferik.json
 
 {
 “id”: “sferik”,
 “name”: “Erik”
 }

Slide 19

Slide 19 text

RESOURCE VS. REPRESENTATION GET /users/sferik.xml GET /users/sferik.json

Slide 20

Slide 20 text

RESOURCE VS. REPRESENTATION GET /users/sferik

Slide 21

Slide 21 text

ACCEPT HEADER The Accept request-header field can be used to specify certain media types which are acceptable for the response.

Slide 22

Slide 22 text

ACCEPT HEADER GET /avatars/sferik.png
 
 Accept: image/png

Slide 23

Slide 23 text

ACCEPT HEADER GET /avatars/sferik
 
 Accept: image/png,
 image/jpeg; q=0.8,
 image/gif; q=0.8,
 image/*; q=0.5,
 application/json; q=0.1

Slide 24

Slide 24 text

ACCEPT HEADER GET /avatars/sferik
 
 Accept: video/*,
 image/gif; q=0.8,
 image/*; q=0.5,
 application/json; q=0.1

Slide 25

Slide 25 text

ACCEPT-LANGUAGE HEADER The Accept-Language request-header field is similar to Accept, but restricts the set of natural languages that are preferred as a response to the request.

Slide 26

Slide 26 text

ACCEPT-LANGUAGE HEADER GET /index.se.html
 
 Accept-Language: se

Slide 27

Slide 27 text

ACCEPT-LANGUAGE HEADER GET /index
 
 Accept-Language: se,
 en-us;q=0.8,
 en;q=0.7

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

FORMATS CHANGE

Slide 34

Slide 34 text

FIELDING ON REST REST is software design on the scale of decades: every detail is intended to promote software longevity and independent evolution. Many of the constraints are directly opposed to short-term efficiency. Unfortunately, people are fairly good at short-term design, and usually awful at long- term design. Most don’t think they need to design past the current release.

Slide 35

Slide 35 text

EXPOSE RESOURCES,
 NOT REPRESENTATIONS

Slide 36

Slide 36 text

TACK