SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
GET SOME REST
PRINCIPLES OF GOOD API DESIGN
MANOJ GANAPATHI, CHIEF ARCHITECT, CODEOPS
ABOUT ME
Manoj Ganapathi
Chief Architect, CodeOps Technologies
• More than 18+ years of IT experience
• Seasoned Architect with products and services experience
• Specialized in Cloud and DevOps
@manojgr
manojgr@gmail.com, manoj@codeops.tech
https://www.linkedin.com/in/manojg
AGENDA
• ABOUT APIS & REST
• API DESIGN BEST PRACTICES
• APIS IN THE SERVERLESS WORLD
• THE FUTURE – GRAPHQL
ABOUT APIS
WHY ARE APIS IMPORTANT?
• KEY FOR PLATFORMS – HELP SHAPE ECOSYSTEMS
• API DESIGN INFLUENCES APP EXPERIENCES
• APIS ARE FOR DEVELOPERS. THEY INFLUENCE DEVELOPER
PRODUCTIVITY
• APIS ARE A GATEWAY TO CLOUD-NATIVE ARCHITECTURES
MISCONCEPTIONS?
•A FAÇADE/LAYER TO BUSINESS LOGIC
•INTERNAL AND EXTERNAL APIS HAVE DIFFERENT
IMPORTANCE
WHAT IS REST?
• REPRESENTATIONAL STATE TRANSFER (REST) IS AN SOFTWARE ARCHITECTURAL STYLE THAT
DEFINES A SET OF CONSTRAINTS TO BE USED FOR CREATING WEB SERVICES.
• WEB SERVICES THAT CONFORM TO THE REST ARCHITECTURAL STYLE, TERMED RESTFUL WEB
SERVICES, PROVIDE INTEROPERABILITY BETWEEN COMPUTER SYSTEMS ON THE INTERNET.
• RESTFUL WEB SERVICES ALLOW THE REQUESTING SYSTEMS TO ACCESS AND MANIPULATE
TEXTUAL REPRESENTATIONS OF WEB RESOURCES BY USING A UNIFORM AND PREDEFINED SET
OF STATELESS OPERATIONS
-FROM WIKIPEDIA
REST BASICS
KEY ARCHITECTURAL PROPERTIES
• PERFORMANCE
• SCALABILITY
• SIMPLICITY
• MODIFIABILITY
• VISIBILITY
• PORTABILITY
ARCHITECTURAL CONSTRAINTS
• CLIENT-SERVER
• STATELESS
• CACHEABLE
• LAYERED SYSTEM
• UNIFORM INTERFACE
A far cry from the dark ages of SOAP, CORBA, RPC etc!
REST – UNIFORM INTERFACE
• IDENTIFICATION OF RESOURCES
• MANIPULATION OF RESOURCES
THROUGH REPRESENTATION
• SELF-DESCRIPTIVE MESSAGES
Resource as URIs
https://api.co/v1/orders/1
JSON, XML
HTTP GET, POST, PUT, DELETE
Mediatypes, cacheability, etc.
BEST PRACTICES
GENERAL BEST PRACTICES
• PREFER NOUNS TO VERBS
• /TICKETS/123 INSTEAD OF /GETTICKET/123
• VERBS CAN BE USED FOR ACTIONS /BOOKS/1/MARKASFAVORITE, /LOGIN
• PREFER PLURALS
/ORDERS, /CARS ETC.
• API PARAMETERS:
• PATH - REQUIRED, RESOURCE IDENTIFIER
• QUERY – OPTIONAL, QUERY COLLECTIONS
• BODY – RESOURCE-SPECIFIC LOGIC
• HEADER – GLOBAL, PLATFORM-WIDE
HTTP STATUS CODES ARE YOUR FRIENDS
• 1XX: HOLD-ON
• 2XX: HERE YOU GO
• 3XX: GO AWAY
• 4XX: YOU SCREWED UP
• 5XX: I SCREWED UP
• LEVERAGE ALL STATUS CODES ALONG WITH RELEVANT HEADERS TO COMMUNICATE
INTENT CLEARLY
• RETURNING 200 FOR ALL CONDITIONS IS A BAD PRACTICE
2XX – HERE YOU GO!
Code Use Example
201 Created
Specify a location header pointing to the location of
newly created resource
POST /Orders …
HTTP/1.1 201 Created
Location: https://eshop.co/v2/orders/1
202 Accepted
Use: Request accepted but will be handled
asynchronously. No payload returned
POST /jobs
HTTP/1.1 202 Accepted
204 No Content
The resource was deleted and no payload is returned
DELETE /orders/654
HTTP/1.1 204 No content
206 Partial Content
A partial list of resources is returned, using pagination,
add a Link header to facilitate navigation
GET /orders?page=4
HTTP/1.1 206 Partial content
Link:
<http://eshop.co/orders?page=1>;rel="first
",
<http://eshop.co/orders?page=3>;rel="pre
v,<http://eshop.co/orders?page=5>;rel="ne
xt, <http://eshop.co/orders?page=9>;
rel="last"
OTHER CODES
Code Use
301 Moved permanently
302 Found
303 See other
304 Not modified
(used in caching)
307 Temporary Redirect
308 Permanent Redirect
Code Use
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
405 Method not allowed
429 Too many requests
Code Use
500 Internal Server Error
501 Not Implemented
503 Service Unavailable
509 Bandwidth Limit exceeded
405 Method not allowed
429 Too many requests
ERROR HANDLING (1/2)
• THEREFORE, APIS MUST RETURN A JSON ERROR REPRESENTATION THAT
CONFORMS TO THE ERROR.JSON
ERROR HANDLING (2/2)
Refer Error.json in the API Spec
VERSIONING
• MOST FREQUENT, IN THE URL:
HTTPS: //API. COM/V2/RESTAURANTS/1234
• CUSTOM HEADER: X-API-VERSION: 2
• LESS FREQUENT, WITH AN ACCEPT HEADER. CLIENTS DON’T HAVE TO CHANGE ENDPOINT,
BUT UPDATE HEADERS
GET /RESTAURANTS
ACCEPT: APPLICATION/VND.RESTAURANTS.V2+JSON
APIS IN THE SERVERLESS WORLD
TRADITIONAL ARCHITECTURE
MOVING TOWARDS RESILIENCE
GRAPHQL IN A NUTSHELL
• A QUERY LANGUAGE FOR YOUR API
• QUERY OR MUTATE EXACTLY WHAT YOU WANT
• MULTIPLE RESOURCES IN ONE REQUEST
• SUBSCRIPTION MODEL
• GRAPHQL APIS ARE ORGANIZED IN TERMS OF TYPES AND FIELDS, NOT
ENDPOINTS.
• ACCESS THE FULL CAPABILITIES OF YOUR DATA FROM A SINGLE ENDPOINT
(USUALLY).
Source: Hasura (https://www.slideshare.net/AWSUsersGroupBengalu/architecture-of-scalable-
and-resilient-apps-with-graphql-amazon-rds-and-aws-lambda )
ONE OF THE GRAPHQL IMPLEMENTATIONS - HASURA
QUESTIONS?
REFERENCES
• HTTPS://WWW.SLIDESHARE.NET/AWSUSERSGROUPBENGALU/ARCHITECTURE-OF-SCALABLE-AND-
RESILIENT-APPS-WITH-GRAPHQL-AMAZON-RDS-AND-AWS-LAMBDA
• THE NEVER-ENDING REST API DESIGN DEBATE
• HTTP://WWW.VINAYSAHNI.COM/BEST-PRACTICES-FOR-A-PRAGMATIC-RESTFUL-API
• HTTPS://GITHUB.COM/PAYPAL/API-STANDARDS/BLOB/MASTER/API-STYLE-GUIDE.MD
• HTTP://BLOG.OCTO.COM/EN/DESIGN-A-REST-API/
• HTTPS://GITHUB.COM/INTERAGENT/HTTP-API-DESIGN/BLOB/MASTER/SUMMARY.MD
• HTTP://SOOKOCHEFF.COM/POST/API/ON-CHOOSING-A-HYPERMEDIA-FORMAT/
• HTTP://WWW.TROYHUNT.COM/2014/02/YOUR-API-VERSIONING-IS-WRONG-WHICH-IS.HTML

Weitere ähnliche Inhalte

Ähnlich wie Get some REST - a discussion on good API design

RESTful web
RESTful webRESTful web
RESTful webAlvin Qi
 
The never-ending REST API design debate -- Devoxx France 2016
The never-ending REST API design debate -- Devoxx France 2016The never-ending REST API design debate -- Devoxx France 2016
The never-ending REST API design debate -- Devoxx France 2016Restlet
 
Scaling with swagger
Scaling with swaggerScaling with swagger
Scaling with swaggerTony Tam
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCdisc99_
 
Eclipse Dirigible WebIDE - Deep Dive
Eclipse Dirigible WebIDE - Deep DiveEclipse Dirigible WebIDE - Deep Dive
Eclipse Dirigible WebIDE - Deep DiveNedelcho Delchev
 
Building SharePoint Single Page Applications Using AngularJS
Building SharePoint Single Page Applications Using AngularJSBuilding SharePoint Single Page Applications Using AngularJS
Building SharePoint Single Page Applications Using AngularJSSharePointInstitute
 
Lessons learned on the Azure API Stewardship Journey.pptx
Lessons learned on the Azure API Stewardship Journey.pptxLessons learned on the Azure API Stewardship Journey.pptx
Lessons learned on the Azure API Stewardship Journey.pptxapidays
 
RESTFul Tools For Lazy Experts - CFSummit 2016
RESTFul Tools For Lazy Experts - CFSummit 2016RESTFul Tools For Lazy Experts - CFSummit 2016
RESTFul Tools For Lazy Experts - CFSummit 2016Ortus Solutions, Corp
 
NASA SensorWeb Enterprise Services
NASA SensorWeb Enterprise ServicesNASA SensorWeb Enterprise Services
NASA SensorWeb Enterprise ServicesPat Cappelaere
 
Building Software Backend (Web API)
Building Software Backend (Web API)Building Software Backend (Web API)
Building Software Backend (Web API)Alexander Goida
 
Approaching APIs
Approaching APIsApproaching APIs
Approaching APIsRoss Singer
 
Coding 100-session-slides
Coding 100-session-slidesCoding 100-session-slides
Coding 100-session-slidesCisco DevNet
 
OpenTravel Advisory Forum 2012 REST XML Resources
OpenTravel Advisory Forum 2012 REST XML ResourcesOpenTravel Advisory Forum 2012 REST XML Resources
OpenTravel Advisory Forum 2012 REST XML ResourcesOpenTravel Alliance
 

Ähnlich wie Get some REST - a discussion on good API design (20)

Api crash
Api crashApi crash
Api crash
 
Api crash
Api crashApi crash
Api crash
 
Api crash
Api crashApi crash
Api crash
 
Api crash
Api crashApi crash
Api crash
 
RESTful web
RESTful webRESTful web
RESTful web
 
The never-ending REST API design debate -- Devoxx France 2016
The never-ending REST API design debate -- Devoxx France 2016The never-ending REST API design debate -- Devoxx France 2016
The never-ending REST API design debate -- Devoxx France 2016
 
Scaling with swagger
Scaling with swaggerScaling with swagger
Scaling with swagger
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
 
Eclipse Dirigible WebIDE - Deep Dive
Eclipse Dirigible WebIDE - Deep DiveEclipse Dirigible WebIDE - Deep Dive
Eclipse Dirigible WebIDE - Deep Dive
 
Building SharePoint Single Page Applications Using AngularJS
Building SharePoint Single Page Applications Using AngularJSBuilding SharePoint Single Page Applications Using AngularJS
Building SharePoint Single Page Applications Using AngularJS
 
Lessons learned on the Azure API Stewardship Journey.pptx
Lessons learned on the Azure API Stewardship Journey.pptxLessons learned on the Azure API Stewardship Journey.pptx
Lessons learned on the Azure API Stewardship Journey.pptx
 
What is REST?
What is REST?What is REST?
What is REST?
 
Rest ful tools for lazy experts
Rest ful tools for lazy expertsRest ful tools for lazy experts
Rest ful tools for lazy experts
 
RESTFul Tools For Lazy Experts - CFSummit 2016
RESTFul Tools For Lazy Experts - CFSummit 2016RESTFul Tools For Lazy Experts - CFSummit 2016
RESTFul Tools For Lazy Experts - CFSummit 2016
 
NASA SensorWeb Enterprise Services
NASA SensorWeb Enterprise ServicesNASA SensorWeb Enterprise Services
NASA SensorWeb Enterprise Services
 
Api Design
Api DesignApi Design
Api Design
 
Building Software Backend (Web API)
Building Software Backend (Web API)Building Software Backend (Web API)
Building Software Backend (Web API)
 
Approaching APIs
Approaching APIsApproaching APIs
Approaching APIs
 
Coding 100-session-slides
Coding 100-session-slidesCoding 100-session-slides
Coding 100-session-slides
 
OpenTravel Advisory Forum 2012 REST XML Resources
OpenTravel Advisory Forum 2012 REST XML ResourcesOpenTravel Advisory Forum 2012 REST XML Resources
OpenTravel Advisory Forum 2012 REST XML Resources
 

Mehr von CodeOps Technologies LLP

AWS Serverless Event-driven Architecture - in lastminute.com meetup
AWS Serverless Event-driven Architecture - in lastminute.com meetupAWS Serverless Event-driven Architecture - in lastminute.com meetup
AWS Serverless Event-driven Architecture - in lastminute.com meetupCodeOps Technologies LLP
 
BUILDING SERVERLESS SOLUTIONS WITH AZURE FUNCTIONS
BUILDING SERVERLESS SOLUTIONS WITH AZURE FUNCTIONSBUILDING SERVERLESS SOLUTIONS WITH AZURE FUNCTIONS
BUILDING SERVERLESS SOLUTIONS WITH AZURE FUNCTIONSCodeOps Technologies LLP
 
APPLYING DEVOPS STRATEGIES ON SCALE USING AZURE DEVOPS SERVICES
APPLYING DEVOPS STRATEGIES ON SCALE USING AZURE DEVOPS SERVICESAPPLYING DEVOPS STRATEGIES ON SCALE USING AZURE DEVOPS SERVICES
APPLYING DEVOPS STRATEGIES ON SCALE USING AZURE DEVOPS SERVICESCodeOps Technologies LLP
 
BUILD, TEST & DEPLOY .NET CORE APPS IN AZURE DEVOPS
BUILD, TEST & DEPLOY .NET CORE APPS IN AZURE DEVOPSBUILD, TEST & DEPLOY .NET CORE APPS IN AZURE DEVOPS
BUILD, TEST & DEPLOY .NET CORE APPS IN AZURE DEVOPSCodeOps Technologies LLP
 
CREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNER
CREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNERCREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNER
CREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNERCodeOps Technologies LLP
 
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...CodeOps Technologies LLP
 
WRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESS
WRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESSWRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESS
WRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESSCodeOps Technologies LLP
 
Training And Serving ML Model Using Kubeflow by Jayesh Sharma
Training And Serving ML Model Using Kubeflow by Jayesh SharmaTraining And Serving ML Model Using Kubeflow by Jayesh Sharma
Training And Serving ML Model Using Kubeflow by Jayesh SharmaCodeOps Technologies LLP
 
Deploy Microservices To Kubernetes Without Secrets by Reenu Saluja
Deploy Microservices To Kubernetes Without Secrets by Reenu SalujaDeploy Microservices To Kubernetes Without Secrets by Reenu Saluja
Deploy Microservices To Kubernetes Without Secrets by Reenu SalujaCodeOps Technologies LLP
 
Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...
Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...
Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...CodeOps Technologies LLP
 
YAML Tips For Kubernetes by Neependra Khare
YAML Tips For Kubernetes by Neependra KhareYAML Tips For Kubernetes by Neependra Khare
YAML Tips For Kubernetes by Neependra KhareCodeOps Technologies LLP
 
Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...
Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...
Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...CodeOps Technologies LLP
 
Monitor Azure Kubernetes Cluster With Prometheus by Mamta Jha
Monitor Azure Kubernetes Cluster With Prometheus by Mamta JhaMonitor Azure Kubernetes Cluster With Prometheus by Mamta Jha
Monitor Azure Kubernetes Cluster With Prometheus by Mamta JhaCodeOps Technologies LLP
 
Functional Programming in Java 8 - Lambdas and Streams
Functional Programming in Java 8 - Lambdas and StreamsFunctional Programming in Java 8 - Lambdas and Streams
Functional Programming in Java 8 - Lambdas and StreamsCodeOps Technologies LLP
 
Distributed Tracing: New DevOps Foundation
Distributed Tracing: New DevOps FoundationDistributed Tracing: New DevOps Foundation
Distributed Tracing: New DevOps FoundationCodeOps Technologies LLP
 
"Distributed Tracing: New DevOps Foundation" by Jayesh Ahire
"Distributed Tracing: New DevOps Foundation" by Jayesh Ahire  "Distributed Tracing: New DevOps Foundation" by Jayesh Ahire
"Distributed Tracing: New DevOps Foundation" by Jayesh Ahire CodeOps Technologies LLP
 

Mehr von CodeOps Technologies LLP (20)

AWS Serverless Event-driven Architecture - in lastminute.com meetup
AWS Serverless Event-driven Architecture - in lastminute.com meetupAWS Serverless Event-driven Architecture - in lastminute.com meetup
AWS Serverless Event-driven Architecture - in lastminute.com meetup
 
Understanding azure batch service
Understanding azure batch serviceUnderstanding azure batch service
Understanding azure batch service
 
DEVOPS AND MACHINE LEARNING
DEVOPS AND MACHINE LEARNINGDEVOPS AND MACHINE LEARNING
DEVOPS AND MACHINE LEARNING
 
SERVERLESS MIDDLEWARE IN AZURE FUNCTIONS
SERVERLESS MIDDLEWARE IN AZURE FUNCTIONSSERVERLESS MIDDLEWARE IN AZURE FUNCTIONS
SERVERLESS MIDDLEWARE IN AZURE FUNCTIONS
 
BUILDING SERVERLESS SOLUTIONS WITH AZURE FUNCTIONS
BUILDING SERVERLESS SOLUTIONS WITH AZURE FUNCTIONSBUILDING SERVERLESS SOLUTIONS WITH AZURE FUNCTIONS
BUILDING SERVERLESS SOLUTIONS WITH AZURE FUNCTIONS
 
APPLYING DEVOPS STRATEGIES ON SCALE USING AZURE DEVOPS SERVICES
APPLYING DEVOPS STRATEGIES ON SCALE USING AZURE DEVOPS SERVICESAPPLYING DEVOPS STRATEGIES ON SCALE USING AZURE DEVOPS SERVICES
APPLYING DEVOPS STRATEGIES ON SCALE USING AZURE DEVOPS SERVICES
 
BUILD, TEST & DEPLOY .NET CORE APPS IN AZURE DEVOPS
BUILD, TEST & DEPLOY .NET CORE APPS IN AZURE DEVOPSBUILD, TEST & DEPLOY .NET CORE APPS IN AZURE DEVOPS
BUILD, TEST & DEPLOY .NET CORE APPS IN AZURE DEVOPS
 
CREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNER
CREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNERCREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNER
CREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNER
 
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
 
WRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESS
WRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESSWRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESS
WRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESS
 
Training And Serving ML Model Using Kubeflow by Jayesh Sharma
Training And Serving ML Model Using Kubeflow by Jayesh SharmaTraining And Serving ML Model Using Kubeflow by Jayesh Sharma
Training And Serving ML Model Using Kubeflow by Jayesh Sharma
 
Deploy Microservices To Kubernetes Without Secrets by Reenu Saluja
Deploy Microservices To Kubernetes Without Secrets by Reenu SalujaDeploy Microservices To Kubernetes Without Secrets by Reenu Saluja
Deploy Microservices To Kubernetes Without Secrets by Reenu Saluja
 
Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...
Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...
Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...
 
YAML Tips For Kubernetes by Neependra Khare
YAML Tips For Kubernetes by Neependra KhareYAML Tips For Kubernetes by Neependra Khare
YAML Tips For Kubernetes by Neependra Khare
 
Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...
Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...
Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...
 
Monitor Azure Kubernetes Cluster With Prometheus by Mamta Jha
Monitor Azure Kubernetes Cluster With Prometheus by Mamta JhaMonitor Azure Kubernetes Cluster With Prometheus by Mamta Jha
Monitor Azure Kubernetes Cluster With Prometheus by Mamta Jha
 
Jet brains space intro presentation
Jet brains space intro presentationJet brains space intro presentation
Jet brains space intro presentation
 
Functional Programming in Java 8 - Lambdas and Streams
Functional Programming in Java 8 - Lambdas and StreamsFunctional Programming in Java 8 - Lambdas and Streams
Functional Programming in Java 8 - Lambdas and Streams
 
Distributed Tracing: New DevOps Foundation
Distributed Tracing: New DevOps FoundationDistributed Tracing: New DevOps Foundation
Distributed Tracing: New DevOps Foundation
 
"Distributed Tracing: New DevOps Foundation" by Jayesh Ahire
"Distributed Tracing: New DevOps Foundation" by Jayesh Ahire  "Distributed Tracing: New DevOps Foundation" by Jayesh Ahire
"Distributed Tracing: New DevOps Foundation" by Jayesh Ahire
 

Kürzlich hochgeladen

VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 

Kürzlich hochgeladen (20)

VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 

Get some REST - a discussion on good API design

  • 1. GET SOME REST PRINCIPLES OF GOOD API DESIGN MANOJ GANAPATHI, CHIEF ARCHITECT, CODEOPS
  • 2. ABOUT ME Manoj Ganapathi Chief Architect, CodeOps Technologies • More than 18+ years of IT experience • Seasoned Architect with products and services experience • Specialized in Cloud and DevOps @manojgr manojgr@gmail.com, manoj@codeops.tech https://www.linkedin.com/in/manojg
  • 3. AGENDA • ABOUT APIS & REST • API DESIGN BEST PRACTICES • APIS IN THE SERVERLESS WORLD • THE FUTURE – GRAPHQL
  • 5. WHY ARE APIS IMPORTANT? • KEY FOR PLATFORMS – HELP SHAPE ECOSYSTEMS • API DESIGN INFLUENCES APP EXPERIENCES • APIS ARE FOR DEVELOPERS. THEY INFLUENCE DEVELOPER PRODUCTIVITY • APIS ARE A GATEWAY TO CLOUD-NATIVE ARCHITECTURES
  • 6. MISCONCEPTIONS? •A FAÇADE/LAYER TO BUSINESS LOGIC •INTERNAL AND EXTERNAL APIS HAVE DIFFERENT IMPORTANCE
  • 7. WHAT IS REST? • REPRESENTATIONAL STATE TRANSFER (REST) IS AN SOFTWARE ARCHITECTURAL STYLE THAT DEFINES A SET OF CONSTRAINTS TO BE USED FOR CREATING WEB SERVICES. • WEB SERVICES THAT CONFORM TO THE REST ARCHITECTURAL STYLE, TERMED RESTFUL WEB SERVICES, PROVIDE INTEROPERABILITY BETWEEN COMPUTER SYSTEMS ON THE INTERNET. • RESTFUL WEB SERVICES ALLOW THE REQUESTING SYSTEMS TO ACCESS AND MANIPULATE TEXTUAL REPRESENTATIONS OF WEB RESOURCES BY USING A UNIFORM AND PREDEFINED SET OF STATELESS OPERATIONS -FROM WIKIPEDIA
  • 8. REST BASICS KEY ARCHITECTURAL PROPERTIES • PERFORMANCE • SCALABILITY • SIMPLICITY • MODIFIABILITY • VISIBILITY • PORTABILITY ARCHITECTURAL CONSTRAINTS • CLIENT-SERVER • STATELESS • CACHEABLE • LAYERED SYSTEM • UNIFORM INTERFACE A far cry from the dark ages of SOAP, CORBA, RPC etc!
  • 9. REST – UNIFORM INTERFACE • IDENTIFICATION OF RESOURCES • MANIPULATION OF RESOURCES THROUGH REPRESENTATION • SELF-DESCRIPTIVE MESSAGES Resource as URIs https://api.co/v1/orders/1 JSON, XML HTTP GET, POST, PUT, DELETE Mediatypes, cacheability, etc.
  • 11. GENERAL BEST PRACTICES • PREFER NOUNS TO VERBS • /TICKETS/123 INSTEAD OF /GETTICKET/123 • VERBS CAN BE USED FOR ACTIONS /BOOKS/1/MARKASFAVORITE, /LOGIN • PREFER PLURALS /ORDERS, /CARS ETC. • API PARAMETERS: • PATH - REQUIRED, RESOURCE IDENTIFIER • QUERY – OPTIONAL, QUERY COLLECTIONS • BODY – RESOURCE-SPECIFIC LOGIC • HEADER – GLOBAL, PLATFORM-WIDE
  • 12. HTTP STATUS CODES ARE YOUR FRIENDS • 1XX: HOLD-ON • 2XX: HERE YOU GO • 3XX: GO AWAY • 4XX: YOU SCREWED UP • 5XX: I SCREWED UP • LEVERAGE ALL STATUS CODES ALONG WITH RELEVANT HEADERS TO COMMUNICATE INTENT CLEARLY • RETURNING 200 FOR ALL CONDITIONS IS A BAD PRACTICE
  • 13. 2XX – HERE YOU GO! Code Use Example 201 Created Specify a location header pointing to the location of newly created resource POST /Orders … HTTP/1.1 201 Created Location: https://eshop.co/v2/orders/1 202 Accepted Use: Request accepted but will be handled asynchronously. No payload returned POST /jobs HTTP/1.1 202 Accepted 204 No Content The resource was deleted and no payload is returned DELETE /orders/654 HTTP/1.1 204 No content 206 Partial Content A partial list of resources is returned, using pagination, add a Link header to facilitate navigation GET /orders?page=4 HTTP/1.1 206 Partial content Link: <http://eshop.co/orders?page=1>;rel="first ", <http://eshop.co/orders?page=3>;rel="pre v,<http://eshop.co/orders?page=5>;rel="ne xt, <http://eshop.co/orders?page=9>; rel="last"
  • 14. OTHER CODES Code Use 301 Moved permanently 302 Found 303 See other 304 Not modified (used in caching) 307 Temporary Redirect 308 Permanent Redirect Code Use 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found 405 Method not allowed 429 Too many requests Code Use 500 Internal Server Error 501 Not Implemented 503 Service Unavailable 509 Bandwidth Limit exceeded 405 Method not allowed 429 Too many requests
  • 15. ERROR HANDLING (1/2) • THEREFORE, APIS MUST RETURN A JSON ERROR REPRESENTATION THAT CONFORMS TO THE ERROR.JSON
  • 16. ERROR HANDLING (2/2) Refer Error.json in the API Spec
  • 17. VERSIONING • MOST FREQUENT, IN THE URL: HTTPS: //API. COM/V2/RESTAURANTS/1234 • CUSTOM HEADER: X-API-VERSION: 2 • LESS FREQUENT, WITH AN ACCEPT HEADER. CLIENTS DON’T HAVE TO CHANGE ENDPOINT, BUT UPDATE HEADERS GET /RESTAURANTS ACCEPT: APPLICATION/VND.RESTAURANTS.V2+JSON
  • 18. APIS IN THE SERVERLESS WORLD
  • 21. GRAPHQL IN A NUTSHELL • A QUERY LANGUAGE FOR YOUR API • QUERY OR MUTATE EXACTLY WHAT YOU WANT • MULTIPLE RESOURCES IN ONE REQUEST • SUBSCRIPTION MODEL • GRAPHQL APIS ARE ORGANIZED IN TERMS OF TYPES AND FIELDS, NOT ENDPOINTS. • ACCESS THE FULL CAPABILITIES OF YOUR DATA FROM A SINGLE ENDPOINT (USUALLY).
  • 23. ONE OF THE GRAPHQL IMPLEMENTATIONS - HASURA
  • 25. REFERENCES • HTTPS://WWW.SLIDESHARE.NET/AWSUSERSGROUPBENGALU/ARCHITECTURE-OF-SCALABLE-AND- RESILIENT-APPS-WITH-GRAPHQL-AMAZON-RDS-AND-AWS-LAMBDA • THE NEVER-ENDING REST API DESIGN DEBATE • HTTP://WWW.VINAYSAHNI.COM/BEST-PRACTICES-FOR-A-PRAGMATIC-RESTFUL-API • HTTPS://GITHUB.COM/PAYPAL/API-STANDARDS/BLOB/MASTER/API-STYLE-GUIDE.MD • HTTP://BLOG.OCTO.COM/EN/DESIGN-A-REST-API/ • HTTPS://GITHUB.COM/INTERAGENT/HTTP-API-DESIGN/BLOB/MASTER/SUMMARY.MD • HTTP://SOOKOCHEFF.COM/POST/API/ON-CHOOSING-A-HYPERMEDIA-FORMAT/ • HTTP://WWW.TROYHUNT.COM/2014/02/YOUR-API-VERSIONING-IS-WRONG-WHICH-IS.HTML