Abstract
Today, REST APIs have established as a means for realizing distributed systems and are supposed to gain even more importance in the context of Cloud Computing, Internet of Things, and Microservices. Nevertheless, many existing REST APIs are known to be not well designed, resulting in the absence of desirable non-functional properties that truly RESTful systems entail. Although existing analysis show, that many REST APIs are not fully REST compliant, it is still an open issue how to improve this deficit and where to start. In this work, we apply structural analysis of REST APIs in order to support API governance, resulting in a set of basic and aggregated metrics that characterize an API set and also guide further governance tasks. We apply the structural analysis on a set of 286 real world APIs and then demonstrate how to derive suitable metrics that represent the perceived complexity of an API, complemented and validated by a survey of developers following the AHP process. As a result, we provide effective support for API governance, helping to identify and remedy problems in APIs.
Similar content being viewed by others
References
Webber J, Parastatidis S, Robinson I (2010) REST in practice: hypermedia and systems architecture. O’Reilly Media, Sebastopol
Fielding RT, Taylor RN (2002) Principled design of the modern Web architecture. ACM Trans Internet Technol 2:115–150
Renzel D, Schlebusch P, Klamma R (2012) Todays top RESTful services and why they are not RESTful. WISE, london
Maleshkova M, Pedrinaci C, Domingue J (2010) Investigating web APIs on the World Wide Web. In: The 8th IEEE European conference on web services (ECOWS 2010), 1–3, Ayia Napa, Cyprus
Adamczyk P, Smith PH, Johnson RE, Hafiz M (2011) REST and Web services: In theory and in practice, REST: from research to practice. Springer, New York
Fielding R, Reschke J (2014) Hypertext transfer protocol (HTTP/1.1): Semantics and Content”, RFC 7231. http://www.ietf.org/rfc/rfc7231.txt
Haupt F, Fischer M, Karastoyanova D, Leymann F, Vukojevic-Haupt K (2014) Service composition for REST, In: IEEE 18th international enterprise distributed object computing conference (EDOC), pp 110–119
Haupt F, Leymann F, Scherer A, Vukojevic-Haupt K (2017) A framework for the structural analysis of REST APIs. In: Proceedings of the IEEE international conference on software architecture (ICSA 2017)
Palma F, Dubois J, Moha N, Guhneuc YG (2014) Detection of REST patterns and antipatterns: a heuristics-based approach, ICSOC 2014. Springer, Berlin
Palma F. Gonzalez-Huerta J, Moha N, Guhneuc Y.G, Tremblay G (2015) Are restful apis well-designed? Detection of their linguistic (anti) patterns. In: International conference on service-oriented computing. Springer, Berlin
Petrillo F, Merle P, Moha N, Guhneuc YG (2016) Are REST APIs for cloud computing well-designed? An exploratory study. Springer, Berlin
Rodriguez C, et al. (2016) REST APIs: a large-scale analysis of compliance with principles and best practices. In: International conference on web engineering, Springer
Fowler M (2010) Richardson maturity model: steps toward the glory of rest. http://martinfowler.com/articles/richardsonMaturityModel.html
Swagger. http://swagger.io/
RESTful API modeling language (RAML). http://raml.org/
Open API initiative. https://www.openapis.org/
API blueprint. https://apiblueprint.org/
I/O Docs. http://mashery.github.io/
Hadley MJ (2006) Web application description language (WADL). https://www.w3.org/Submission/wadl/
Chinnici R, et al. (2007) Web services description language (wsdl) version 2.0 part 1: Core language. W3C recommendation 26
Dusseault L, Snell J (2010) PATCH method for HTTP, RFC 5789. https://tools.ietf.org/rfc/rfc5789.txt
Haupt F, Karastoyanova D, Leymann F, Schroth B (2014) A model-driven approach for REST compliant services. In: ICWS
Haupt F, Leymann F, Pautasso C (2015) A conversation based approach for modeling REST APIs. In: IEEE WICSA 2015
Allamaraju S (2010) Restful web services cookbook: solutions for improving scalability and simplicity. O’Reilly Media Inc, Sebastopol
Nottingham M. Home documents for HTTP APIs. https://tools.ietf.org/html/draft-nottingham-json-home-05
Bondy JA, Murty USR (1976) Graph theory with applications. Macmillan, London
Schlindwein SL, Ison R (2004) Human knowing and perceived complexity: implications for systems practice. Emerg Complex Organ 6(3):2732
Skouradaki M, Andrikopoulos V, Kopp O, Leymann F (2016) RoSE: reoccurring structures detection in BPMN 2.0 process model collections, OTM 2016. Springer, Berlin
Pautasso C, Ivanchikj A, Schreier S. RESTalk pattern language—patterns for RESTful conversations. http://restalk-patterns.org
Pautasso C, Ivanchikj A, Schreier S (2016) A pattern language for RESTful conversations. In: Proceedings of the 21st European conference on pattern languages of programs (PLoP), ACM
Vukojevic-Haupt K, Haupt F, Leymann F, Reinfurt L (2015) Bootstrapping complex workflow middleware systems into the cloud. e-Science 2015, IEEE
Saaty TL (2008) Decision making with the analytic hierarchy process. Int J Serv Sci 1(1):83–98
Acknowledgements
This work has been partially funded by the German Research Foundation (DFG) within the Cluster of Excellence in Simulation Technology (EXC310/2) at the University of Stuttgart.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Haupt, F., Leymann, F. & Vukojevic-Haupt, K. API governance support through the structural analysis of REST APIs. Comput Sci Res Dev 33, 291–303 (2018). https://doi.org/10.1007/s00450-017-0384-1
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00450-017-0384-1