Best Practice in API Design
-
Upload
lorna-mitchell -
Category
Technology
-
view
5.321 -
download
4
description
Transcript of Best Practice in API Design
![Page 1: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/1.jpg)
Best Practice in API Design
![Page 2: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/2.jpg)
About Me
2
• Lorna Jane Mitchell
• http://lornajane.net
• PHP consultant, developer, trainer
• Author, speaker
![Page 3: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/3.jpg)
Using APIs
3
There are various stages:
1. publish
![Page 4: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/4.jpg)
Using APIs
3
There are various stages:
1. publish
2. dogfood
![Page 5: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/5.jpg)
Using APIs
3
There are various stages:
1. publish
2. dogfood
3. modularity
![Page 6: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/6.jpg)
Web
![Page 7: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/7.jpg)
Service
![Page 8: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/8.jpg)
Design
![Page 9: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/9.jpg)
Web
![Page 10: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/10.jpg)
HTTP
![Page 11: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/11.jpg)
Request and Response
![Page 12: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/12.jpg)
Statelessness
![Page 13: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/13.jpg)
Status Codes
![Page 14: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/14.jpg)
Status Codes: Headline News
12
Common codes:
200 OK
302 Found
301 Moved
401 Not Authorised
403 Forbidden
404 Not Found
500 Internal Server Error
![Page 15: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/15.jpg)
Headers
![Page 16: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/16.jpg)
HTTP Headers
14
Headers are the metadata about the content we send/receive
Useful headers:
• Accept and Content-Type: used for content format negotiation
![Page 17: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/17.jpg)
Content Negotiation
![Page 18: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/18.jpg)
HTTP Headers
16
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
![Page 19: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/19.jpg)
HTTP Headers
16
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
![Page 20: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/20.jpg)
HTTP Headers
16
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 21: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/21.jpg)
Access Control
![Page 22: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/22.jpg)
Verbs
![Page 23: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/23.jpg)
HTTP Verbs
19
• 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 24: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/24.jpg)
Service
![Page 25: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/25.jpg)
Target Audience
![Page 26: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/26.jpg)
Heartbeat
![Page 27: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/27.jpg)
RPC Services
![Page 28: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/28.jpg)
RPC: Remote Procedure Call
24
• Single endpoint
• Function name
• Parameters
• Return value
• SOAP is a kind of RPC
![Page 29: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/29.jpg)
Soap
![Page 30: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/30.jpg)
Data Formats
![Page 31: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/31.jpg)
Small APIs
![Page 32: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/32.jpg)
REST
![Page 33: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/33.jpg)
RESTful Services
29
• 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 34: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/34.jpg)
Design
![Page 35: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/35.jpg)
Versioning
![Page 36: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/36.jpg)
Consistency
![Page 37: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/37.jpg)
Handling Errors
![Page 38: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/38.jpg)
Delivery and Support
![Page 39: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/39.jpg)
Web Service Design
![Page 40: Best Practice in API Design](https://reader035.fdocuments.net/reader035/viewer/2022062405/555a27ecd8b42a900d8b49ae/html5/thumbnails/40.jpg)
Thanks!
36
https://joind.in/6385
@lornajane
http://lornajane.net/