SlideShare une entreprise Scribd logo
1  sur  53
Are RESTful APIs Well-designed?
Detection of their Linguistic (Anti)Patterns
Francis Palma, Javier Gonzalez-Huerta, Naouel Moha,
Yann-Gaël Guéhéneuc, and Guy Tremblay
ICSOC 2015, Goa, India
RESTful APIs
GET PUT POST DELETE
Are RESTful APIs Well-designed? 2
HTTP
Method
of 28
RESTful APIs
GET PUT POST DELETE
Are RESTful APIs Well-designed? 2
HTTP
Method
Resource
Location
of 28
RESTful APIs
GET PUT POST DELETE
Are RESTful APIs Well-designed? 2
HTTP
Method
Resource
Location
Resource
Representation
of 28
Problem Context (1 of 3)
Unpredictable Context
Are RESTful APIs Well-designed? 3 of 28
Problem Context (1 of 3)
Unpredictable Context
Use of Underscore
or Capital
Resource Identifier:
Hinder
Interoperability
Are RESTful APIs Well-designed? 3 of 28
Problem Context (1 of 3)
Unpredictable Context
Use of Underscore
or Capital
Resource Identifier:
Hinder
Interoperability
No hierarchical relations
among resources: Hinder
understandability
Are RESTful APIs Well-designed? 3 of 28
Linguistic Patterns and Antipatterns
• Linguistic antipatterns are poor solutions to common recurring
naming problems, which may hinder:
• the consumption and
• the maintenance of RESTful APIs
• Linguistic patterns are best solutions to common naming problems
Are RESTful APIs Well-designed? 4 of 28
GET
https://api.instagram.com/v1/media/951585698083207827_477821501/likes?access_token=...
Problem Context (2 of 3)
GET
https://api.instagram.com/v1/users/self/followed-by?access_token=482615388.1fb23...
• Two HTTP GET requests for Instagram
Are RESTful APIs Well-designed? 5 of 28
GET
https://api.instagram.com/v1/media/951585698083207827_477821501/likes?access_token=...
Problem Context (2 of 3)
Contextless Resource
Names
GET
https://api.instagram.com/v1/users/self/followed-by?access_token=482615388.1fb23...
Contextualised Resource
Names
• Two HTTP GET requests for Instagram
Are RESTful APIs Well-designed? 5 of 28
POST
https://api.dropbox.com/1/fileops/create_folder?
root=dropbox&path=MyDropboxFolder/20150401/PicsOnly
Problem Context (3 of 3)
POST
https://api.dropbox.com/1/fileops/delete?
root=dropbox&path=MyDropboxFolder/MyDropboxFolderApril2014/MyDropboxNewFolderPic
s
• Two HTTP POST requests for Dropbox
Are RESTful APIs Well-designed? 6 of 28
POST
https://api.dropbox.com/1/fileops/create_folder?
root=dropbox&path=MyDropboxFolder/20150401/PicsOnly
Problem Context (3 of 3)
Amorphous URIs
POST
https://api.dropbox.com/1/fileops/delete?
root=dropbox&path=MyDropboxFolder/MyDropboxFolderApril2014/MyDropboxNewFolderPic
s
Tidy URIs
• Two HTTP POST requests for Dropbox
Are RESTful APIs Well-designed? 6 of 28
Outline
- Contribution on the detection of REST linguistic (anti)patterns
- State of the art contributions
- Our proposed DOLAR approach
- Experiments and some initial results
Outline
- Contribution on the detection of REST linguistic (anti)patterns
- State of the art contributions
- Our proposed DOLAR approach
- Experiments and some initial results
Contributions
Goal: To assess the URIs design in RESTful APIs
• DOLAR (Detection Of Linguistic Antipatterns in REST)
- a heuristics-based approach
• SOFA (Service Oriented Framework for Antipatterns), an underlying
framework to support the detection of SOA antipatterns
• Empirical evidence of the presence of REST linguistic (anti)patterns
Are RESTful APIs Well-designed? 7 of 28
Outline
- Contribution on the detection of REST linguistic (anti)patterns
- State of the art contributions
- Our proposed DOLAR approach
- Experiments and some initial results
Related Work: Software Code Lexicons
8 of 28
Related Work: Software Code Lexicons
8 of 28
Related Work: Lexical/Semantic Analysis
9 of 28
Related Work: Lexical/Semantic Analysis
9 of 28
Related Work: Lexical/Semantic Analysis
9 of 28
Related Work: Lexical/Semantic Analysis
9 of 28
Related Work: Lexical/Semantic Analysis
9 of 28
Related Work: Lexical/Semantic Analysis
9 of 28
Related Work: Summary
- Existing approaches deal with
• Object-oriented identifiers and their consistencies with
comments
• Traditional SOAP-based Web services interfaces
- Analyses of RESTful APIs
• Based on subjective lexical comparisons
• Do not provide an automatic analysis
 No dedicated approach to automatically assess the linguistic
quality
of RESTful APIs
Are RESTful APIs Well-designed? 10 of 28
Outline
- Contribution on the detection of REST linguistic (anti)patterns
- State of the art contributions
- Our proposed DOLAR approach
- Experiments and some initial results
Approach (1 of 5): DOLAR
DOLAR: Detection Of Linguistic Antipatterns in REST
Analysis
Description of
REST linguistic
(anti)patterns
Heuristics
Detection
Algorithms
Detected
Linguistic
(anti)pattern
s
REST APIs
Implementation
of Interfaces
Implementation
of Algorithms
Services
Interfaces
Methods
Invocation
Application
Request
URIs
Step 1
Analysis
Step 2
Implementation
Step 3
Detection
Are RESTful APIs Well-designed? 11 of 28
Approach (2 of 5): Analysis
• Identify syntactic aspects:
o For example: Amorphous/Tidy URIs
• Identify semantic aspects:
o For example: Contextless/Contextualised Resource Names
• Analyse relationships among URI nodes. For example:
hypernym-hyponym relation meronym-holonym relation
Are RESTful APIs Well-designed? 12 of 28
1: Contextless-Resource-Names(Request-URI)
2: URINodes ← Extract-URI-Nodes(Request-URI)
3: for each index = 1 to Length(URINodes)-1
4: Set1 ← Capture-Context-by-Synsets(URINodesindex)
5: Set2 ← Capture-Context-by-Synsets(URINodesindex+1)
6: if Set1 ∩ Set2 = ∅
7: print “Contextless Resource Names detected”
8: break
9: end if
10: end for
Heuristic of Contextless Resource Names antipattern
Approach (3 of 5): Heuristics
Are RESTful APIs Well-designed? 13 of 28
1: Contextless-Resource-Names(Request-URI)
2: URINodes ← Extract-URI-Nodes(Request-URI)
3: for each index = 1 to Length(URINodes)-1
4: Set1 ← Capture-Context-by-Synsets(URINodesindex)
5: Set2 ← Capture-Context-by-Synsets(URINodesindex+1)
6: if Set1 ∩ Set2 = ∅
7: print “Contextless Resource Names detected”
8: break
9: end if
10: end for
Heuristic of Contextless Resource Names antipattern
Approach (3 of 5): Heuristics
1: Amorphous-URI(Request-URI)
2: URINodes[] ← Extract-URI-Nodes(Request-URI)
3: for each index = 1 to Length(URINodes)
4: if(URINodesi.contains(“_”) or
5: URINodesi.contains(“/”) or
6: URINodesi.contains(Find-File-Extensions(Request-URI)) or
7: URINodesi.contains(Find-Uppercase-Resources(Request-URI)))
8: print “Amorphous URI detected”
9: end if
10: end for
Heuristic of Amorphous URIs antipattern
Are RESTful APIs Well-designed? 13 of 28
Approach (4 of 5): Detection
Detection
Algorithms
Service
Interfaces
Dynamic
Invocation
Parameterised
HTTP Requests
and Responses
Implemented
Client
Client
Authentication
Detected
REST Linguistic
(anti)patterns
Application
Are RESTful APIs Well-designed? 14 of 28
Approach (5 of 5): Framework
Service
Oriented
Framework for
Antipatterns
• REST Handler
- Provides a wrapper layer
- Automatically applies detection algorithms on REST URIs
Are RESTful APIs Well-designed? 15 of 28
Outline
- Contribution on the detection of REST linguistic (anti)patterns
- State of the art contributions
- Our proposed DOLAR approach
- Experiments and some initial results
Experiments (1 of 5): Setup
 Purpose is to show
- the accuracy of DOLAR approach
- the extensibility of our SOFA framework, and
- low performance overhead of the detection algorithms
 Subjects
- 5 REST linguistic antipatterns
- 5 REST linguistic patterns
 Objects
and 10 more…
Are RESTful APIs Well-designed? 16 of 28
Experiments (2 of 5): Hypotheses
H1. Accuracy
The set of all defined rules have an average precision and recall of more than 75%,
i.e., more than three out of four are true positives and we do not miss more than one
out of four of all existing (anti)patterns
H2. Extensibility
Our SOFA framework is extensible for adding new service-oriented and REST-specific
(anti)patterns. In addition, SOFA facilitates an easy integration of new RESTful APIs
H3. Performance
The concretely implemented detection algorithms perform with a low detection times,
i.e., on an average in the order of seconds
Are RESTful APIs Well-designed? 17 of 28
Experiments (3 of 5): Subjects
10 REST linguistic (anti)patterns
• Contextualised Resource Names vs. Contextless Resource Names
• Hierarchical Nodes vs. Non-hierarchical Nodes
• Tidy URIs vs. Amorphous URIs
• Verbless URIs vs. CRUDy URIs
• Singularised Nodes vs. Pluralised Nodes
Are RESTful APIs Well-designed? 18 of 28
Experiments (4 of 5): Objects
REST APIs Online Documentations
alchemyapi.com/api/
bbyopen.com/developer/
dev.bitly.com/api.html
charlieharvey.org.uk/about/api/
dropbox.com/developers/core/docs/
developers.facebook.com/docs/graph-api/
developer.musicgraph.com/api-docs/overview/
github.com/blackducksw/ohloh_api/
integrate.teamviewer.com/en/develop/documentation/
dev.twitter.com/docs/api/
developers.google.com/youtube/v3/
developer.zappos.com/docs/api-documentation/
api.externalip.net
instagram.com/developer
api.stackexchange.com.docs
Are RESTful APIs Well-designed? 19 of 28
Experiments (5 of 5): Process
• Define heuristics for 10 REST linguistic (anti)patterns
• Implement clients and invoke 309 methods from APIs
• Apply detection algorithms on parameterised HTTP requests URIs
• Manually validate detection results to identify true positives and false
negatives (on a subset of methods)
• Use precision and recall to measure detection accuracy
Are RESTful APIs Well-designed? 20 of 28
Results (1 of 7): Detection Summary
Are RESTful APIs Well-designed? 21 of 28
Results (3 of 7): Detection
22Are RESTful APIs Well-designed? of 28
Results (4 of 7): Hypothesis H1
DOALR has a high accuracy in terms of
precision and recall
(Anti)Patterns
Validation 1
(Dropbox)
Validation 2
(On Subset)
Precision Recall Precision
Contextualised Resource Names
vs. Contextless Resource Names
100% 100% 53.3%
Hierarchical Nodes
vs. Non-hierarchical Nodes
60.7% 66.7% 58.3%
Tidy URIs
vs. Amorphous URIs
96.2% 87.5% 100%
Verbless URIs
vs. CRUDy URIs
90% 87.5% 100%
Singularised Nodes
vs. Pluralised Nodes
60% 48.3% 86.7%
Average 81.4% 78% 79.7%
Are RESTful APIs Well-designed? 23 of 28
Results (4 of 7): Hypothesis H1
23

DOALR has a high accuracy in terms of
precision and recall
(Anti)Patterns
Validation 1
(Dropbox)
Validation 2
(On Subset)
Precision Recall Precision
Contextualised Resource Names
vs. Contextless Resource Names
100% 100% 53.3%
Hierarchical Nodes
vs. Non-hierarchical Nodes
60.7% 66.7% 58.3%
Tidy URIs
vs. Amorphous URIs
96.2% 87.5% 100%
Verbless URIs
vs. CRUDy URIs
90% 87.5% 100%
Singularised Nodes
vs. Pluralised Nodes
60% 48.3% 86.7%
Average 81.4% 78% 79.7%
Are RESTful APIs Well-designed? of 28
Results (5 of 7): Hypothesis H2
The SOFA framework is extensible
• Newly added 10 REST linguistic (anti)patterns
• in total SOFA supports the detection of 23 REST (anti)patterns
• Added 3 new RESTful APIs including
• in total SOFA supports analysis of 15 RESTful APIs
• Tested 190 new REST methods
• Addition of new (anti)patterns and RESTful APIs is flexible
24Are RESTful APIs Well-designed? of 28
Results (5 of 7): Hypothesis H2
24
The SOFA framework is extensible
• Newly added 10 REST linguistic (anti)patterns
• in total SOFA supports the detection of 23 REST (anti)patterns
• Added 3 new RESTful APIs including
• in total SOFA supports analysis of 15 RESTful APIs
• Tested 190 new REST methods
• Addition of new (anti)patterns and RESTful APIs is flexible
Are RESTful APIs Well-designed? of 28
Results (6 of 7): Hypothesis H3
The implemented algorithms perform with
considerably a low detection times
25
(Anti)Patterns
Average
Detection
Time
Contextualised Resource Names
vs. Contextless Resource Names 0.613s
Hierarchical Nodes
vs. Non-hierarchical Nodes 0.589s
Tidy URIs
vs. Amorphous URIs 0.976s
Verbless URIs
vs. CRUDy URIs 0.707s
Singularised Nodes
vs. Pluralised Nodes 0.662s
Average 0.709s
Are RESTful APIs Well-designed? of 28
Results (6 of 7): Hypothesis H3
25
The implemented algorithms perform with
considerably a low detection times

(Anti)Patterns
Average
Detection
Time
Contextualised Resource Names
vs. Contextless Resource Names
0.613s
Hierarchical Nodes
vs. Non-hierarchical Nodes
0.589s
Tidy URIs
vs. Amorphous URIs
0.976s
Verbless URIs
vs. CRUDy URIs
0.707s
Singularised Nodes
vs. Pluralised Nodes
0.662s
Average 0.709s
Are RESTful APIs Well-designed? of 28
Results (7 of 7): Validation Summary
• Defined heuristics and implemented detection algorithms for 10
REST linguistic (anti)patterns
• Performed detection on 15 well-known RESTful APIs, including
• Average precision of detection algorithms is between 79.7% and
81.4%, and average recall is 78%
• Detailed results and more materials on sofa.uqam.ca/dolar/
26Are RESTful APIs Well-designed? of 28
Conclusion
27Are RESTful APIs Well-designed? of 28
Conclusion
27Are RESTful APIs Well-designed? of 28
Conclusion
27Are RESTful APIs Well-designed? of 28
Conclusion
27Are RESTful APIs Well-designed? of 28
Future Work
• Apply DOLAR on other RESTful APIs
• Perform validation of DOLAR results with APIs developers
• Analyse HTTP responses for linguistic (anti)patterns
28Are RESTful APIs Well-designed? of 28
Thank you!
Questions?

Contenu connexe

Tendances

Leveraging Lucene/Solr as a Knowledge Graph and Intent Engine: Presented by T...
Leveraging Lucene/Solr as a Knowledge Graph and Intent Engine: Presented by T...Leveraging Lucene/Solr as a Knowledge Graph and Intent Engine: Presented by T...
Leveraging Lucene/Solr as a Knowledge Graph and Intent Engine: Presented by T...Lucidworks
 
A Learning to Rank Project on a Daily Song Ranking Problem
A Learning to Rank Project on a Daily Song Ranking ProblemA Learning to Rank Project on a Daily Song Ranking Problem
A Learning to Rank Project on a Daily Song Ranking ProblemSease
 
Building a Meta-search Engine
Building a Meta-search EngineBuilding a Meta-search Engine
Building a Meta-search EngineAyan Chandra
 
How the Lucene More Like This Works
How the Lucene More Like This WorksHow the Lucene More Like This Works
How the Lucene More Like This WorksSease
 
Learning to Rank Presentation (v2) at LexisNexis Search Guild
Learning to Rank Presentation (v2) at LexisNexis Search GuildLearning to Rank Presentation (v2) at LexisNexis Search Guild
Learning to Rank Presentation (v2) at LexisNexis Search GuildSujit Pal
 
Haystack 2018 - Algorithmic Extraction of Keywords Concepts and Vocabularies
Haystack 2018 - Algorithmic Extraction of Keywords Concepts and VocabulariesHaystack 2018 - Algorithmic Extraction of Keywords Concepts and Vocabularies
Haystack 2018 - Algorithmic Extraction of Keywords Concepts and VocabulariesMax Irwin
 
Software Birthmark for Detecting Theft of JavaScript Programs
Software Birthmark for Detecting Theft of JavaScript ProgramsSoftware Birthmark for Detecting Theft of JavaScript Programs
Software Birthmark for Detecting Theft of JavaScript ProgramsSwati Patel
 
Search Quality Evaluation: a Developer Perspective
Search Quality Evaluation: a Developer PerspectiveSearch Quality Evaluation: a Developer Perspective
Search Quality Evaluation: a Developer PerspectiveAndrea Gazzarini
 
Zouaq wole2013
Zouaq wole2013Zouaq wole2013
Zouaq wole2013Amal Zouaq
 

Tendances (11)

Leveraging Lucene/Solr as a Knowledge Graph and Intent Engine: Presented by T...
Leveraging Lucene/Solr as a Knowledge Graph and Intent Engine: Presented by T...Leveraging Lucene/Solr as a Knowledge Graph and Intent Engine: Presented by T...
Leveraging Lucene/Solr as a Knowledge Graph and Intent Engine: Presented by T...
 
A Learning to Rank Project on a Daily Song Ranking Problem
A Learning to Rank Project on a Daily Song Ranking ProblemA Learning to Rank Project on a Daily Song Ranking Problem
A Learning to Rank Project on a Daily Song Ranking Problem
 
Haystacks slides
Haystacks slidesHaystacks slides
Haystacks slides
 
Building a Meta-search Engine
Building a Meta-search EngineBuilding a Meta-search Engine
Building a Meta-search Engine
 
How the Lucene More Like This Works
How the Lucene More Like This WorksHow the Lucene More Like This Works
How the Lucene More Like This Works
 
Learning to Rank Presentation (v2) at LexisNexis Search Guild
Learning to Rank Presentation (v2) at LexisNexis Search GuildLearning to Rank Presentation (v2) at LexisNexis Search Guild
Learning to Rank Presentation (v2) at LexisNexis Search Guild
 
SEppt
SEpptSEppt
SEppt
 
Haystack 2018 - Algorithmic Extraction of Keywords Concepts and Vocabularies
Haystack 2018 - Algorithmic Extraction of Keywords Concepts and VocabulariesHaystack 2018 - Algorithmic Extraction of Keywords Concepts and Vocabularies
Haystack 2018 - Algorithmic Extraction of Keywords Concepts and Vocabularies
 
Software Birthmark for Detecting Theft of JavaScript Programs
Software Birthmark for Detecting Theft of JavaScript ProgramsSoftware Birthmark for Detecting Theft of JavaScript Programs
Software Birthmark for Detecting Theft of JavaScript Programs
 
Search Quality Evaluation: a Developer Perspective
Search Quality Evaluation: a Developer PerspectiveSearch Quality Evaluation: a Developer Perspective
Search Quality Evaluation: a Developer Perspective
 
Zouaq wole2013
Zouaq wole2013Zouaq wole2013
Zouaq wole2013
 

En vedette

RESTful APIs: Promises & lies
RESTful APIs: Promises & liesRESTful APIs: Promises & lies
RESTful APIs: Promises & liesTareque Hossain
 
All you need to know when designing RESTful APIs
All you need to know when designing RESTful APIsAll you need to know when designing RESTful APIs
All you need to know when designing RESTful APIsJesús Espejo
 
RESTFul API Design and Documentation - an Introduction
RESTFul API Design and Documentation - an IntroductionRESTFul API Design and Documentation - an Introduction
RESTFul API Design and Documentation - an IntroductionMiredot
 
Building RESTful APIs
Building RESTful APIsBuilding RESTful APIs
Building RESTful APIsSilota Inc.
 
Building Consistent RESTful APIs in a high-performance environment
Building Consistent RESTful APIs in a high-performance environmentBuilding Consistent RESTful APIs in a high-performance environment
Building Consistent RESTful APIs in a high-performance environmentLinkedIn
 
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론Terry Cho
 

En vedette (7)

RESTful APIs: Promises & lies
RESTful APIs: Promises & liesRESTful APIs: Promises & lies
RESTful APIs: Promises & lies
 
All you need to know when designing RESTful APIs
All you need to know when designing RESTful APIsAll you need to know when designing RESTful APIs
All you need to know when designing RESTful APIs
 
RESTFul API Design and Documentation - an Introduction
RESTFul API Design and Documentation - an IntroductionRESTFul API Design and Documentation - an Introduction
RESTFul API Design and Documentation - an Introduction
 
Building RESTful APIs
Building RESTful APIsBuilding RESTful APIs
Building RESTful APIs
 
Building Consistent RESTful APIs in a high-performance environment
Building Consistent RESTful APIs in a high-performance environmentBuilding Consistent RESTful APIs in a high-performance environment
Building Consistent RESTful APIs in a high-performance environment
 
RESTful API Design, Second Edition
RESTful API Design, Second EditionRESTful API Design, Second Edition
RESTful API Design, Second Edition
 
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
 

Similaire à Are REST APIs Well Designed? Detecting Linguistic Patterns and Antipatterns

SurfExample- Recommendation of Exception Handling Code Examples
SurfExample- Recommendation of Exception Handling Code ExamplesSurfExample- Recommendation of Exception Handling Code Examples
SurfExample- Recommendation of Exception Handling Code ExamplesMasud Rahman
 
Domain Ontology Usage Analysis Framework (OUSAF)
Domain Ontology Usage Analysis Framework (OUSAF)Domain Ontology Usage Analysis Framework (OUSAF)
Domain Ontology Usage Analysis Framework (OUSAF)Jamshaid Ashraf
 
Ontologies and semantic web
Ontologies and semantic webOntologies and semantic web
Ontologies and semantic webStanley Wang
 
Restful Best Practices
Restful Best PracticesRestful Best Practices
Restful Best PracticesBelighted
 
SemFacet paper
SemFacet paperSemFacet paper
SemFacet paperDBOnto
 
Sem facet paper
Sem facet paperSem facet paper
Sem facet paperDBOnto
 
Code-Review-COW56-Meeting
Code-Review-COW56-MeetingCode-Review-COW56-Meeting
Code-Review-COW56-MeetingMasud Rahman
 
Ontology Based Approach for Semantic Information Retrieval System
Ontology Based Approach for Semantic Information Retrieval SystemOntology Based Approach for Semantic Information Retrieval System
Ontology Based Approach for Semantic Information Retrieval SystemIJTET Journal
 
The Characteristics of a RESTful Semantic Web and Why They Are Important
The Characteristics of a RESTful Semantic Web and Why They Are ImportantThe Characteristics of a RESTful Semantic Web and Why They Are Important
The Characteristics of a RESTful Semantic Web and Why They Are ImportantChimezie Ogbuji
 
Designing RESTful APIs
Designing RESTful APIsDesigning RESTful APIs
Designing RESTful APIsanandology
 
Finding knowledge, data and answers on the Semantic Web
Finding knowledge, data and answers on the Semantic WebFinding knowledge, data and answers on the Semantic Web
Finding knowledge, data and answers on the Semantic Webebiquity
 
Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...
Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...
Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...Raffi Khatchadourian
 
Profile-based Dataset Recommendation for RDF Data Linking
Profile-based Dataset Recommendation for RDF Data Linking  Profile-based Dataset Recommendation for RDF Data Linking
Profile-based Dataset Recommendation for RDF Data Linking Mohamed BEN ELLEFI
 
Enhancing the Quality of ImmPort Data
Enhancing the Quality of ImmPort DataEnhancing the Quality of ImmPort Data
Enhancing the Quality of ImmPort DataBarry Smith
 
Representational State Transfer (REST) and HATEOAS
Representational State Transfer (REST) and HATEOASRepresentational State Transfer (REST) and HATEOAS
Representational State Transfer (REST) and HATEOASGuy K. Kloss
 
A Framework for Ontology Usage Analysis
A Framework for Ontology Usage AnalysisA Framework for Ontology Usage Analysis
A Framework for Ontology Usage AnalysisJamshaid Ashraf
 
Machine Learning for Software Maintainability
Machine Learning for Software MaintainabilityMachine Learning for Software Maintainability
Machine Learning for Software MaintainabilityValerio Maggio
 

Similaire à Are REST APIs Well Designed? Detecting Linguistic Patterns and Antipatterns (20)

Icsoc15.ppt
Icsoc15.pptIcsoc15.ppt
Icsoc15.ppt
 
SurfExample- Recommendation of Exception Handling Code Examples
SurfExample- Recommendation of Exception Handling Code ExamplesSurfExample- Recommendation of Exception Handling Code Examples
SurfExample- Recommendation of Exception Handling Code Examples
 
Icsoc16a.ppt
Icsoc16a.pptIcsoc16a.ppt
Icsoc16a.ppt
 
Icsoc16a.ppt
Icsoc16a.pptIcsoc16a.ppt
Icsoc16a.ppt
 
Domain Ontology Usage Analysis Framework (OUSAF)
Domain Ontology Usage Analysis Framework (OUSAF)Domain Ontology Usage Analysis Framework (OUSAF)
Domain Ontology Usage Analysis Framework (OUSAF)
 
Ontologies and semantic web
Ontologies and semantic webOntologies and semantic web
Ontologies and semantic web
 
Restful Best Practices
Restful Best PracticesRestful Best Practices
Restful Best Practices
 
SemFacet paper
SemFacet paperSemFacet paper
SemFacet paper
 
Sem facet paper
Sem facet paperSem facet paper
Sem facet paper
 
Code-Review-COW56-Meeting
Code-Review-COW56-MeetingCode-Review-COW56-Meeting
Code-Review-COW56-Meeting
 
Ontology Based Approach for Semantic Information Retrieval System
Ontology Based Approach for Semantic Information Retrieval SystemOntology Based Approach for Semantic Information Retrieval System
Ontology Based Approach for Semantic Information Retrieval System
 
The Characteristics of a RESTful Semantic Web and Why They Are Important
The Characteristics of a RESTful Semantic Web and Why They Are ImportantThe Characteristics of a RESTful Semantic Web and Why They Are Important
The Characteristics of a RESTful Semantic Web and Why They Are Important
 
Designing RESTful APIs
Designing RESTful APIsDesigning RESTful APIs
Designing RESTful APIs
 
Finding knowledge, data and answers on the Semantic Web
Finding knowledge, data and answers on the Semantic WebFinding knowledge, data and answers on the Semantic Web
Finding knowledge, data and answers on the Semantic Web
 
Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...
Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...
Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...
 
Profile-based Dataset Recommendation for RDF Data Linking
Profile-based Dataset Recommendation for RDF Data Linking  Profile-based Dataset Recommendation for RDF Data Linking
Profile-based Dataset Recommendation for RDF Data Linking
 
Enhancing the Quality of ImmPort Data
Enhancing the Quality of ImmPort DataEnhancing the Quality of ImmPort Data
Enhancing the Quality of ImmPort Data
 
Representational State Transfer (REST) and HATEOAS
Representational State Transfer (REST) and HATEOASRepresentational State Transfer (REST) and HATEOAS
Representational State Transfer (REST) and HATEOAS
 
A Framework for Ontology Usage Analysis
A Framework for Ontology Usage AnalysisA Framework for Ontology Usage Analysis
A Framework for Ontology Usage Analysis
 
Machine Learning for Software Maintainability
Machine Learning for Software MaintainabilityMachine Learning for Software Maintainability
Machine Learning for Software Maintainability
 

Plus de Francis Palma

Using Interactive GA for Requirements Prioritization
Using Interactive GA for Requirements PrioritizationUsing Interactive GA for Requirements Prioritization
Using Interactive GA for Requirements PrioritizationFrancis Palma
 
Using Interactive Genetic Algorithm for Requirements Prioritization
Using Interactive Genetic Algorithm for Requirements PrioritizationUsing Interactive Genetic Algorithm for Requirements Prioritization
Using Interactive Genetic Algorithm for Requirements Prioritization Francis Palma
 
Interactive Requirements Prioritization Using Search Based Optimization Techn...
Interactive Requirements Prioritization Using Search Based Optimization Techn...Interactive Requirements Prioritization Using Search Based Optimization Techn...
Interactive Requirements Prioritization Using Search Based Optimization Techn...Francis Palma
 
Specification and Detection of SOA Antipatterns
Specification and Detection of SOA AntipatternsSpecification and Detection of SOA Antipatterns
Specification and Detection of SOA AntipatternsFrancis Palma
 
Recommendation System for Design Patterns in Software Development
Recommendation System for Design Patterns in Software DevelopmentRecommendation System for Design Patterns in Software Development
Recommendation System for Design Patterns in Software DevelopmentFrancis Palma
 
Detection of SOA Antipatterns
Detection of SOA AntipatternsDetection of SOA Antipatterns
Detection of SOA AntipatternsFrancis Palma
 
Unifying Service Oriented Technologies for the Specification and Detection of...
Unifying Service Oriented Technologies for the Specification and Detection of...Unifying Service Oriented Technologies for the Specification and Detection of...
Unifying Service Oriented Technologies for the Specification and Detection of...Francis Palma
 
A Study on the Taxonomy of Service Antipatterns
A Study on the Taxonomy of Service AntipatternsA Study on the Taxonomy of Service Antipatterns
A Study on the Taxonomy of Service AntipatternsFrancis Palma
 
Specification and Detection of Business Process Antipatterns
Specification and Detection of Business Process AntipatternsSpecification and Detection of Business Process Antipatterns
Specification and Detection of Business Process AntipatternsFrancis Palma
 
Investigating the Change-proneness of Service Patterns and Antipatterns
Investigating the Change-proneness of Service Patterns and AntipatternsInvestigating the Change-proneness of Service Patterns and Antipatterns
Investigating the Change-proneness of Service Patterns and AntipatternsFrancis Palma
 
Detection of REST Patterns and Antipatterns: A Heuristics-based Approach
Detection of REST Patterns and Antipatterns: A Heuristics-based ApproachDetection of REST Patterns and Antipatterns: A Heuristics-based Approach
Detection of REST Patterns and Antipatterns: A Heuristics-based ApproachFrancis Palma
 
Specification and Detection of SOA Antipatterns in Web Services
Specification and Detection of SOA Antipatterns in Web ServicesSpecification and Detection of SOA Antipatterns in Web Services
Specification and Detection of SOA Antipatterns in Web ServicesFrancis Palma
 
Detection of Process Antipatterns: An BPEL Perspective
Detection of Process Antipatterns: An BPEL PerspectiveDetection of Process Antipatterns: An BPEL Perspective
Detection of Process Antipatterns: An BPEL PerspectiveFrancis Palma
 
Specification and Detection of SOA Antipatterns
Specification and Detection of SOA AntipatternsSpecification and Detection of SOA Antipatterns
Specification and Detection of SOA AntipatternsFrancis Palma
 

Plus de Francis Palma (14)

Using Interactive GA for Requirements Prioritization
Using Interactive GA for Requirements PrioritizationUsing Interactive GA for Requirements Prioritization
Using Interactive GA for Requirements Prioritization
 
Using Interactive Genetic Algorithm for Requirements Prioritization
Using Interactive Genetic Algorithm for Requirements PrioritizationUsing Interactive Genetic Algorithm for Requirements Prioritization
Using Interactive Genetic Algorithm for Requirements Prioritization
 
Interactive Requirements Prioritization Using Search Based Optimization Techn...
Interactive Requirements Prioritization Using Search Based Optimization Techn...Interactive Requirements Prioritization Using Search Based Optimization Techn...
Interactive Requirements Prioritization Using Search Based Optimization Techn...
 
Specification and Detection of SOA Antipatterns
Specification and Detection of SOA AntipatternsSpecification and Detection of SOA Antipatterns
Specification and Detection of SOA Antipatterns
 
Recommendation System for Design Patterns in Software Development
Recommendation System for Design Patterns in Software DevelopmentRecommendation System for Design Patterns in Software Development
Recommendation System for Design Patterns in Software Development
 
Detection of SOA Antipatterns
Detection of SOA AntipatternsDetection of SOA Antipatterns
Detection of SOA Antipatterns
 
Unifying Service Oriented Technologies for the Specification and Detection of...
Unifying Service Oriented Technologies for the Specification and Detection of...Unifying Service Oriented Technologies for the Specification and Detection of...
Unifying Service Oriented Technologies for the Specification and Detection of...
 
A Study on the Taxonomy of Service Antipatterns
A Study on the Taxonomy of Service AntipatternsA Study on the Taxonomy of Service Antipatterns
A Study on the Taxonomy of Service Antipatterns
 
Specification and Detection of Business Process Antipatterns
Specification and Detection of Business Process AntipatternsSpecification and Detection of Business Process Antipatterns
Specification and Detection of Business Process Antipatterns
 
Investigating the Change-proneness of Service Patterns and Antipatterns
Investigating the Change-proneness of Service Patterns and AntipatternsInvestigating the Change-proneness of Service Patterns and Antipatterns
Investigating the Change-proneness of Service Patterns and Antipatterns
 
Detection of REST Patterns and Antipatterns: A Heuristics-based Approach
Detection of REST Patterns and Antipatterns: A Heuristics-based ApproachDetection of REST Patterns and Antipatterns: A Heuristics-based Approach
Detection of REST Patterns and Antipatterns: A Heuristics-based Approach
 
Specification and Detection of SOA Antipatterns in Web Services
Specification and Detection of SOA Antipatterns in Web ServicesSpecification and Detection of SOA Antipatterns in Web Services
Specification and Detection of SOA Antipatterns in Web Services
 
Detection of Process Antipatterns: An BPEL Perspective
Detection of Process Antipatterns: An BPEL PerspectiveDetection of Process Antipatterns: An BPEL Perspective
Detection of Process Antipatterns: An BPEL Perspective
 
Specification and Detection of SOA Antipatterns
Specification and Detection of SOA AntipatternsSpecification and Detection of SOA Antipatterns
Specification and Detection of SOA Antipatterns
 

Dernier

Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 

Dernier (20)

Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 

Are REST APIs Well Designed? Detecting Linguistic Patterns and Antipatterns

  • 1. Are RESTful APIs Well-designed? Detection of their Linguistic (Anti)Patterns Francis Palma, Javier Gonzalez-Huerta, Naouel Moha, Yann-Gaël Guéhéneuc, and Guy Tremblay ICSOC 2015, Goa, India
  • 2. RESTful APIs GET PUT POST DELETE Are RESTful APIs Well-designed? 2 HTTP Method of 28
  • 3. RESTful APIs GET PUT POST DELETE Are RESTful APIs Well-designed? 2 HTTP Method Resource Location of 28
  • 4. RESTful APIs GET PUT POST DELETE Are RESTful APIs Well-designed? 2 HTTP Method Resource Location Resource Representation of 28
  • 5. Problem Context (1 of 3) Unpredictable Context Are RESTful APIs Well-designed? 3 of 28
  • 6. Problem Context (1 of 3) Unpredictable Context Use of Underscore or Capital Resource Identifier: Hinder Interoperability Are RESTful APIs Well-designed? 3 of 28
  • 7. Problem Context (1 of 3) Unpredictable Context Use of Underscore or Capital Resource Identifier: Hinder Interoperability No hierarchical relations among resources: Hinder understandability Are RESTful APIs Well-designed? 3 of 28
  • 8. Linguistic Patterns and Antipatterns • Linguistic antipatterns are poor solutions to common recurring naming problems, which may hinder: • the consumption and • the maintenance of RESTful APIs • Linguistic patterns are best solutions to common naming problems Are RESTful APIs Well-designed? 4 of 28
  • 9. GET https://api.instagram.com/v1/media/951585698083207827_477821501/likes?access_token=... Problem Context (2 of 3) GET https://api.instagram.com/v1/users/self/followed-by?access_token=482615388.1fb23... • Two HTTP GET requests for Instagram Are RESTful APIs Well-designed? 5 of 28
  • 10. GET https://api.instagram.com/v1/media/951585698083207827_477821501/likes?access_token=... Problem Context (2 of 3) Contextless Resource Names GET https://api.instagram.com/v1/users/self/followed-by?access_token=482615388.1fb23... Contextualised Resource Names • Two HTTP GET requests for Instagram Are RESTful APIs Well-designed? 5 of 28
  • 11. POST https://api.dropbox.com/1/fileops/create_folder? root=dropbox&path=MyDropboxFolder/20150401/PicsOnly Problem Context (3 of 3) POST https://api.dropbox.com/1/fileops/delete? root=dropbox&path=MyDropboxFolder/MyDropboxFolderApril2014/MyDropboxNewFolderPic s • Two HTTP POST requests for Dropbox Are RESTful APIs Well-designed? 6 of 28
  • 12. POST https://api.dropbox.com/1/fileops/create_folder? root=dropbox&path=MyDropboxFolder/20150401/PicsOnly Problem Context (3 of 3) Amorphous URIs POST https://api.dropbox.com/1/fileops/delete? root=dropbox&path=MyDropboxFolder/MyDropboxFolderApril2014/MyDropboxNewFolderPic s Tidy URIs • Two HTTP POST requests for Dropbox Are RESTful APIs Well-designed? 6 of 28
  • 13. Outline - Contribution on the detection of REST linguistic (anti)patterns - State of the art contributions - Our proposed DOLAR approach - Experiments and some initial results
  • 14. Outline - Contribution on the detection of REST linguistic (anti)patterns - State of the art contributions - Our proposed DOLAR approach - Experiments and some initial results
  • 15. Contributions Goal: To assess the URIs design in RESTful APIs • DOLAR (Detection Of Linguistic Antipatterns in REST) - a heuristics-based approach • SOFA (Service Oriented Framework for Antipatterns), an underlying framework to support the detection of SOA antipatterns • Empirical evidence of the presence of REST linguistic (anti)patterns Are RESTful APIs Well-designed? 7 of 28
  • 16. Outline - Contribution on the detection of REST linguistic (anti)patterns - State of the art contributions - Our proposed DOLAR approach - Experiments and some initial results
  • 17. Related Work: Software Code Lexicons 8 of 28
  • 18. Related Work: Software Code Lexicons 8 of 28
  • 19. Related Work: Lexical/Semantic Analysis 9 of 28
  • 20. Related Work: Lexical/Semantic Analysis 9 of 28
  • 21. Related Work: Lexical/Semantic Analysis 9 of 28
  • 22. Related Work: Lexical/Semantic Analysis 9 of 28
  • 23. Related Work: Lexical/Semantic Analysis 9 of 28
  • 24. Related Work: Lexical/Semantic Analysis 9 of 28
  • 25. Related Work: Summary - Existing approaches deal with • Object-oriented identifiers and their consistencies with comments • Traditional SOAP-based Web services interfaces - Analyses of RESTful APIs • Based on subjective lexical comparisons • Do not provide an automatic analysis  No dedicated approach to automatically assess the linguistic quality of RESTful APIs Are RESTful APIs Well-designed? 10 of 28
  • 26. Outline - Contribution on the detection of REST linguistic (anti)patterns - State of the art contributions - Our proposed DOLAR approach - Experiments and some initial results
  • 27. Approach (1 of 5): DOLAR DOLAR: Detection Of Linguistic Antipatterns in REST Analysis Description of REST linguistic (anti)patterns Heuristics Detection Algorithms Detected Linguistic (anti)pattern s REST APIs Implementation of Interfaces Implementation of Algorithms Services Interfaces Methods Invocation Application Request URIs Step 1 Analysis Step 2 Implementation Step 3 Detection Are RESTful APIs Well-designed? 11 of 28
  • 28. Approach (2 of 5): Analysis • Identify syntactic aspects: o For example: Amorphous/Tidy URIs • Identify semantic aspects: o For example: Contextless/Contextualised Resource Names • Analyse relationships among URI nodes. For example: hypernym-hyponym relation meronym-holonym relation Are RESTful APIs Well-designed? 12 of 28
  • 29. 1: Contextless-Resource-Names(Request-URI) 2: URINodes ← Extract-URI-Nodes(Request-URI) 3: for each index = 1 to Length(URINodes)-1 4: Set1 ← Capture-Context-by-Synsets(URINodesindex) 5: Set2 ← Capture-Context-by-Synsets(URINodesindex+1) 6: if Set1 ∩ Set2 = ∅ 7: print “Contextless Resource Names detected” 8: break 9: end if 10: end for Heuristic of Contextless Resource Names antipattern Approach (3 of 5): Heuristics Are RESTful APIs Well-designed? 13 of 28
  • 30. 1: Contextless-Resource-Names(Request-URI) 2: URINodes ← Extract-URI-Nodes(Request-URI) 3: for each index = 1 to Length(URINodes)-1 4: Set1 ← Capture-Context-by-Synsets(URINodesindex) 5: Set2 ← Capture-Context-by-Synsets(URINodesindex+1) 6: if Set1 ∩ Set2 = ∅ 7: print “Contextless Resource Names detected” 8: break 9: end if 10: end for Heuristic of Contextless Resource Names antipattern Approach (3 of 5): Heuristics 1: Amorphous-URI(Request-URI) 2: URINodes[] ← Extract-URI-Nodes(Request-URI) 3: for each index = 1 to Length(URINodes) 4: if(URINodesi.contains(“_”) or 5: URINodesi.contains(“/”) or 6: URINodesi.contains(Find-File-Extensions(Request-URI)) or 7: URINodesi.contains(Find-Uppercase-Resources(Request-URI))) 8: print “Amorphous URI detected” 9: end if 10: end for Heuristic of Amorphous URIs antipattern Are RESTful APIs Well-designed? 13 of 28
  • 31. Approach (4 of 5): Detection Detection Algorithms Service Interfaces Dynamic Invocation Parameterised HTTP Requests and Responses Implemented Client Client Authentication Detected REST Linguistic (anti)patterns Application Are RESTful APIs Well-designed? 14 of 28
  • 32. Approach (5 of 5): Framework Service Oriented Framework for Antipatterns • REST Handler - Provides a wrapper layer - Automatically applies detection algorithms on REST URIs Are RESTful APIs Well-designed? 15 of 28
  • 33. Outline - Contribution on the detection of REST linguistic (anti)patterns - State of the art contributions - Our proposed DOLAR approach - Experiments and some initial results
  • 34. Experiments (1 of 5): Setup  Purpose is to show - the accuracy of DOLAR approach - the extensibility of our SOFA framework, and - low performance overhead of the detection algorithms  Subjects - 5 REST linguistic antipatterns - 5 REST linguistic patterns  Objects and 10 more… Are RESTful APIs Well-designed? 16 of 28
  • 35. Experiments (2 of 5): Hypotheses H1. Accuracy The set of all defined rules have an average precision and recall of more than 75%, i.e., more than three out of four are true positives and we do not miss more than one out of four of all existing (anti)patterns H2. Extensibility Our SOFA framework is extensible for adding new service-oriented and REST-specific (anti)patterns. In addition, SOFA facilitates an easy integration of new RESTful APIs H3. Performance The concretely implemented detection algorithms perform with a low detection times, i.e., on an average in the order of seconds Are RESTful APIs Well-designed? 17 of 28
  • 36. Experiments (3 of 5): Subjects 10 REST linguistic (anti)patterns • Contextualised Resource Names vs. Contextless Resource Names • Hierarchical Nodes vs. Non-hierarchical Nodes • Tidy URIs vs. Amorphous URIs • Verbless URIs vs. CRUDy URIs • Singularised Nodes vs. Pluralised Nodes Are RESTful APIs Well-designed? 18 of 28
  • 37. Experiments (4 of 5): Objects REST APIs Online Documentations alchemyapi.com/api/ bbyopen.com/developer/ dev.bitly.com/api.html charlieharvey.org.uk/about/api/ dropbox.com/developers/core/docs/ developers.facebook.com/docs/graph-api/ developer.musicgraph.com/api-docs/overview/ github.com/blackducksw/ohloh_api/ integrate.teamviewer.com/en/develop/documentation/ dev.twitter.com/docs/api/ developers.google.com/youtube/v3/ developer.zappos.com/docs/api-documentation/ api.externalip.net instagram.com/developer api.stackexchange.com.docs Are RESTful APIs Well-designed? 19 of 28
  • 38. Experiments (5 of 5): Process • Define heuristics for 10 REST linguistic (anti)patterns • Implement clients and invoke 309 methods from APIs • Apply detection algorithms on parameterised HTTP requests URIs • Manually validate detection results to identify true positives and false negatives (on a subset of methods) • Use precision and recall to measure detection accuracy Are RESTful APIs Well-designed? 20 of 28
  • 39. Results (1 of 7): Detection Summary Are RESTful APIs Well-designed? 21 of 28
  • 40. Results (3 of 7): Detection 22Are RESTful APIs Well-designed? of 28
  • 41. Results (4 of 7): Hypothesis H1 DOALR has a high accuracy in terms of precision and recall (Anti)Patterns Validation 1 (Dropbox) Validation 2 (On Subset) Precision Recall Precision Contextualised Resource Names vs. Contextless Resource Names 100% 100% 53.3% Hierarchical Nodes vs. Non-hierarchical Nodes 60.7% 66.7% 58.3% Tidy URIs vs. Amorphous URIs 96.2% 87.5% 100% Verbless URIs vs. CRUDy URIs 90% 87.5% 100% Singularised Nodes vs. Pluralised Nodes 60% 48.3% 86.7% Average 81.4% 78% 79.7% Are RESTful APIs Well-designed? 23 of 28
  • 42. Results (4 of 7): Hypothesis H1 23  DOALR has a high accuracy in terms of precision and recall (Anti)Patterns Validation 1 (Dropbox) Validation 2 (On Subset) Precision Recall Precision Contextualised Resource Names vs. Contextless Resource Names 100% 100% 53.3% Hierarchical Nodes vs. Non-hierarchical Nodes 60.7% 66.7% 58.3% Tidy URIs vs. Amorphous URIs 96.2% 87.5% 100% Verbless URIs vs. CRUDy URIs 90% 87.5% 100% Singularised Nodes vs. Pluralised Nodes 60% 48.3% 86.7% Average 81.4% 78% 79.7% Are RESTful APIs Well-designed? of 28
  • 43. Results (5 of 7): Hypothesis H2 The SOFA framework is extensible • Newly added 10 REST linguistic (anti)patterns • in total SOFA supports the detection of 23 REST (anti)patterns • Added 3 new RESTful APIs including • in total SOFA supports analysis of 15 RESTful APIs • Tested 190 new REST methods • Addition of new (anti)patterns and RESTful APIs is flexible 24Are RESTful APIs Well-designed? of 28
  • 44. Results (5 of 7): Hypothesis H2 24 The SOFA framework is extensible • Newly added 10 REST linguistic (anti)patterns • in total SOFA supports the detection of 23 REST (anti)patterns • Added 3 new RESTful APIs including • in total SOFA supports analysis of 15 RESTful APIs • Tested 190 new REST methods • Addition of new (anti)patterns and RESTful APIs is flexible Are RESTful APIs Well-designed? of 28
  • 45. Results (6 of 7): Hypothesis H3 The implemented algorithms perform with considerably a low detection times 25 (Anti)Patterns Average Detection Time Contextualised Resource Names vs. Contextless Resource Names 0.613s Hierarchical Nodes vs. Non-hierarchical Nodes 0.589s Tidy URIs vs. Amorphous URIs 0.976s Verbless URIs vs. CRUDy URIs 0.707s Singularised Nodes vs. Pluralised Nodes 0.662s Average 0.709s Are RESTful APIs Well-designed? of 28
  • 46. Results (6 of 7): Hypothesis H3 25 The implemented algorithms perform with considerably a low detection times  (Anti)Patterns Average Detection Time Contextualised Resource Names vs. Contextless Resource Names 0.613s Hierarchical Nodes vs. Non-hierarchical Nodes 0.589s Tidy URIs vs. Amorphous URIs 0.976s Verbless URIs vs. CRUDy URIs 0.707s Singularised Nodes vs. Pluralised Nodes 0.662s Average 0.709s Are RESTful APIs Well-designed? of 28
  • 47. Results (7 of 7): Validation Summary • Defined heuristics and implemented detection algorithms for 10 REST linguistic (anti)patterns • Performed detection on 15 well-known RESTful APIs, including • Average precision of detection algorithms is between 79.7% and 81.4%, and average recall is 78% • Detailed results and more materials on sofa.uqam.ca/dolar/ 26Are RESTful APIs Well-designed? of 28
  • 48. Conclusion 27Are RESTful APIs Well-designed? of 28
  • 49. Conclusion 27Are RESTful APIs Well-designed? of 28
  • 50. Conclusion 27Are RESTful APIs Well-designed? of 28
  • 51. Conclusion 27Are RESTful APIs Well-designed? of 28
  • 52. Future Work • Apply DOLAR on other RESTful APIs • Perform validation of DOLAR results with APIs developers • Analyse HTTP responses for linguistic (anti)patterns 28Are RESTful APIs Well-designed? of 28