Slide 1

Slide 1 text

Web APIs, REST and the RapdevX API Wednesday, March 14, 12

Slide 2

Slide 2 text

What Are APIs? Wednesday, March 14, 12

Slide 3

Slide 3 text

2 Major Classes Wednesday, March 14, 12

Slide 4

Slide 4 text

2 Major Classes •Socket-based •HTTP-based Wednesday, March 14, 12

Slide 5

Slide 5 text

Socket APIs Wednesday, March 14, 12

Slide 6

Slide 6 text

How They Work Wednesday, March 14, 12

Slide 7

Slide 7 text

Server Client Wednesday, March 14, 12

Slide 8

Slide 8 text

Server Client Wednesday, March 14, 12

Slide 9

Slide 9 text

Server Client Wednesday, March 14, 12

Slide 10

Slide 10 text

Server Client Wednesday, March 14, 12

Slide 11

Slide 11 text

Server Client Wednesday, March 14, 12

Slide 12

Slide 12 text

Server Client Wednesday, March 14, 12

Slide 13

Slide 13 text

Server Client Wednesday, March 14, 12

Slide 14

Slide 14 text

Why not a socket API? Wednesday, March 14, 12

Slide 15

Slide 15 text

You need to consider: • low level networking concepts • data formatting • message formatting • when to read and write • ... Wednesday, March 14, 12

Slide 16

Slide 16 text

Sockets kind of suck! Wednesday, March 14, 12

Slide 17

Slide 17 text

HTTP APIs Wednesday, March 14, 12

Slide 18

Slide 18 text

HTTP The Protocol Wednesday, March 14, 12

Slide 19

Slide 19 text

HTTP Implementation Details Wednesday, March 14, 12

Slide 20

Slide 20 text

POST /hello Accept: application/json name=world Wednesday, March 14, 12

Slide 21

Slide 21 text

HTTP Methods Wednesday, March 14, 12

Slide 22

Slide 22 text

• CONNECT • PUT • POST • HEAD • OPTIONS • GET • TRACE • DELETE Wednesday, March 14, 12

Slide 23

Slide 23 text

• PUT • POST • GET • DELETE Wednesday, March 14, 12

Slide 24

Slide 24 text

POST /hello Accept: application/json name=world Wednesday, March 14, 12

Slide 25

Slide 25 text

Resources Wednesday, March 14, 12

Slide 26

Slide 26 text

• / • /hello/world • /posts/1/comments/3 Wednesday, March 14, 12

Slide 27

Slide 27 text

POST /hello Accept: application/json name=world Wednesday, March 14, 12

Slide 28

Slide 28 text

Headers Wednesday, March 14, 12

Slide 29

Slide 29 text

POST /hello Accept: application/json name=world Wednesday, March 14, 12

Slide 30

Slide 30 text

Request Body Wednesday, March 14, 12

Slide 31

Slide 31 text

API Technologies Wednesday, March 14, 12

Slide 32

Slide 32 text

SOAP Wednesday, March 14, 12

Slide 33

Slide 33 text

SOAP XML XML XML XML Wednesday, March 14, 12

Slide 34

Slide 34 text

REST Wednesday, March 14, 12

Slide 35

Slide 35 text

REST hates state! Wednesday, March 14, 12

Slide 36

Slide 36 text

CRUD operations Wednesday, March 14, 12

Slide 37

Slide 37 text

Create HTTP Post to Resource POST /puppies Read HTTP GET from the resources or from an instance of the resource GET /puppies/1 Update HTTP PUT to the instance of the resource PUT /puppies/1 Delete HTTP DELETE to the instance of the resource DELETE /puppies/1 Wednesday, March 14, 12

Slide 38

Slide 38 text

Transport Formats Wednesday, March 14, 12

Slide 39

Slide 39 text

•XML • More easily validated • More libraries and support • More data to push across, and thus slower •JSON • Much smaller • Great support in most modern languages • To do it truly correctly, it has to go through a JS interpreter Wednesday, March 14, 12

Slide 40

Slide 40 text

The RapdevX API Wednesday, March 14, 12

Slide 41

Slide 41 text

API Details Wednesday, March 14, 12

Slide 42

Slide 42 text

• REST • JSON Transport format • Python and Bottle implementation Wednesday, March 14, 12

Slide 43

Slide 43 text

API-level Design Wednesday, March 14, 12

Slide 44

Slide 44 text

Wednesday, March 14, 12