Web APIs - challenges, design points, and research opportunities: invited talk at the 2nd international workshop on API usage and evolution (WAPI '18) - Wittern, Erik (2018 IEEE ACM 2nd International Workshop on API Usage and Evolution (WAPI), 2018)
Web Application Programming Interfaces (web APIs) provide programmatic, network-based access to remote data or functionalities. Applications, for example, use the Google Places API to learn about nearby establishments, use the Twitter, Instagram, or Facebook API to connect users with friends and family, or use the Stripe API to accept end-user payments. Increasingly, applications themselves consist of micro-services that expose their capabilities to one another using web APIs. In comparison to library APIs, which are a common subject of software engineering research, web APIs present unique challenges - both for providers and consumers - that are arguably much less explored yet [3]. For one, in web APIs, providers control both the API and the runtime providing the capabilities exposed by the API. In consequence, providers may extend, change, or even remove these capabilities or the API, with possibly severe effects for consuming applications. In contrast, applications typically depend on specific versions of software libraries, which can be used even as the library evolves. Being controlled by another party and invoked via network, web API consumers also have to consider and possibly mitigate varying quality of service (QoS) characteristics. Primarily, the availabilities and response times of web APIs change over time, possibly impacting application performance or functionality. Furthermore, the use of library APIs is eased by mechanisms like auto-complete or IDE-integrated documentation (at least in typed languages). In contrast, web APIs commonly lack machine-understandable specifications and consume and provide data in the form of strings. To correctly use a web API, developers have to familiarize with semi-structured documentation pages, often written in HTML - there are only few IDE-based error-checking approaches for web APIs yet [2]. Whereas for many programming languages central package manager services provide unified access to available libraries (think Maven for Java, npm for JavaScript, or RubyGems for Ruby), comprehensive listings of web APIs do not exist, hardening their discovery and selection. In this talk, we outline the characteristics of web APIs causing these challenges. We discuss relevant design points, both for providers and consumers, how these design points have been implemented by different web API paradigms in recent years, and recent attempts to bride these paradigms [1]. Throughout the talk, we give examples of our research to address web API-related challenges. Our goal is to inspire WAPI attendees to take on some of the many research opportunities surrounding web APIs.