42
Best Practice in API Design

Best Practice in Web Service Design

Embed Size (px)

DESCRIPTION

API Design talk from the php|tek conference in Chicago, IL

Citation preview

Page 1: Best Practice in Web Service Design

Best Practice in API Design

Page 2: Best Practice in Web Service Design

About This Talk

2

• The sum of my experiences

• Building APIs

• Consuming APIs

• Maintaining my own APIs

• Contains:

• HTTP theory

• Service types and data formats

• Design pointers

Page 3: Best Practice in Web Service Design

When To Use An API

3

Times you want to build an API:

• To share data to another app

• To give users better control/access to their data

• To build a modular, scalable system

Page 4: Best Practice in Web Service Design

Web

Page 5: Best Practice in Web Service Design

Service

Page 6: Best Practice in Web Service Design

Design

Page 7: Best Practice in Web Service Design

Web

Page 8: Best Practice in Web Service Design

Request and Response

Page 9: Best Practice in Web Service Design

Statelessness

Page 10: Best Practice in Web Service Design

Status Codes

Page 11: Best Practice in Web Service Design

Status Codes

11

Win/Fail indicator

Page 12: Best Practice in Web Service Design

Status Codes

11

Win/Fail indicator Common codes:

200 OK

302 Found

301 Moved

401 Not Authorised

403 Forbidden

404 Not Found

500 Internal Server Error

Page 13: Best Practice in Web Service Design

Headers

Page 14: Best Practice in Web Service Design

HTTP Headers

13

Headers are the metadata about the content we send/receive

Useful headers:

• Accept and Content-Type: used for content format negotiation

• User-Agent: to identify what made the request

• Set-Cookie and Cookie: working with cookie data

• Authorization: controlling access

Page 15: Best Practice in Web Service Design

Verbs

Page 16: Best Practice in Web Service Design

HTTP Verbs

15

• More than GET and POST

• PUT and DELETE to update and delete in a RESTful service

• HEAD, OPTIONS and others also specified

In REST, we use:

GET Read

POST Create

PUT Update

DELETE Delete

Page 17: Best Practice in Web Service Design

Service

Page 18: Best Practice in Web Service Design

RPC Services

Page 19: Best Practice in Web Service Design

RPC: Remote Procedure Call

18

• Single endpoint

• Function name

• Parameters

• Return value

Page 20: Best Practice in Web Service Design

RPC Services

19

• XML-RPC

• JSON-RPC

• Soap

Page 21: Best Practice in Web Service Design

RPC Services

19

• XML-RPC

• JSON-RPC

• Soap

• other loose RPC services

Page 22: Best Practice in Web Service Design

JSON vs XML vs ?

Page 23: Best Practice in Web Service Design

JSON

21

• JavaScript Object Notation

• Lightweight

• Ideal for devices

• Native in many languages

• Great for AJAX applications

Page 24: Best Practice in Web Service Design

XML

22

• EXtensible Markup Lanugage

• Verbose and precise

• Best option for machine-to-machine

Page 25: Best Practice in Web Service Design

Soap

Page 26: Best Practice in Web Service Design

REST

Page 27: Best Practice in Web Service Design

RESTful Services

25

• REpresentational State Transfer

• URLs are unique resource identifiers

• HTTP verbs indicate which operation should happen

• We have full CRUD operations on a series of resources

Page 28: Best Practice in Web Service Design

Design

Page 29: Best Practice in Web Service Design

Target Audience

Page 30: Best Practice in Web Service Design

Statelessness

Page 31: Best Practice in Web Service Design

Version Parameter

Page 32: Best Practice in Web Service Design

Status Codes

Page 33: Best Practice in Web Service Design

Consistency

Page 34: Best Practice in Web Service Design

Small APIs

Page 35: Best Practice in Web Service Design

Heartbeat

Page 36: Best Practice in Web Service Design

Handling Errors

Page 37: Best Practice in Web Service Design

Content Negotiation

Page 38: Best Practice in Web Service Design

Access Control

Page 39: Best Practice in Web Service Design

Access Control

37

Do Not Reinvent the Wheel

• Username/password

• SSL

• Tokens

• OpenID/SAML/LDAP

Page 40: Best Practice in Web Service Design

Delivery and Support

Page 41: Best Practice in Web Service Design

Web Service Design

Page 42: Best Practice in Web Service Design

Thanks!

40

http://joind.in/3387

@lornajane

http://lornajane.net/