4
4
system.
Linux and Berkeley Software Distribution are examples of operating systems that
implement the POSIX APIs.[29]
An API differs from an application binary interface (ABI) in that an API is source
code based while an ABI is binary based. For instance, POSIX provides APIs while
the Linux Standard Base provides an ABI.[31][32]
Remote APIs
Remote APIs allow developers to manipulate remote resources through protocols,
specific standards for communication that allow different technologies to work
together, regardless of language or platform. For example, the Java Database
Connectivity API allows developers to query many different types of databases with
the same set of functions, while the Java remote method invocation API uses the
Java Remote Method Protocol to allow invocation of functions that operate remotely,
but appear local to the developer.[33][34]
Therefore, remote APIs are useful in maintaining the object abstraction in object-
oriented programming; a method call, executed locally on a proxy object, invokes
the corresponding method on the remote object, using the remoting protocol, and
acquires the result to be used locally as a return value.
Web APIs
Main article: Web API
Web APIs are the defined interfaces through which interactions happen between an
enterprise and applications that use its assets, which also is a Service Level
Agreement (SLA) to specify the functional provider and expose the service path or
URL for its API users. An API approach is an architectural approach that revolves
around providing a program interface to a set of services to different applications
serving different types of consumers.[36]
When used in the context of web development, an API is typically defined as a set
of specifications, such as Hypertext Transfer Protocol (HTTP) request messages,
along with a definition of the structure of response messages, usually in an
Extensible Markup Language (XML) or JavaScript Object Notation (JSON) format. An
example might be a shipping company API that can be added to an eCommerce-focused
website to facilitate ordering shipping services and automatically include current
shipping rates, without the site developer having to enter the shipper's rate table
into a web database. While "web API" historically has been virtually synonymous
with web service, the recent trend (so-called Web 2.0) has been moving away from
Simple Object Access Protocol (SOAP) based web services and service-oriented
architecture (SOA) towards more direct representational state transfer (REST) style
web resources and resource-oriented architecture (ROA).[37] Part of this trend is
related to the Semantic Web movement toward Resource Description Framework (RDF), a
concept to promote web-based ontology engineering technologies. Web APIs allow the
combination of multiple APIs into new applications known as mashups.[38] In the
social media space, web APIs have allowed web communities to facilitate sharing
content and data between communities and applications. In this way, content that is
created in one place dynamically can be posted and updated to multiple locations on
the web.[39] For example, Twitter's REST API allows developers to access core
Twitter data and the Search API provides methods for developers to interact with
Twitter Search and trends data.[40]
Design
The design of an API has significant impact on its usage.[5] The principle of
information hiding describes the role of programming interfaces as enabling modular
programming by hiding the implementation details of the modules so that users of
modules need not understand the complexities inside the modules.[41] Thus, the
design of an API attempts to provide only the tools a user would expect.[5] The
design of programming interfaces represents an important part of software
architecture, the organization of a complex piece of software.[42]
Release policies
APIs are one of the more common ways technology companies integrate. Those that
provide and use APIs are considered as being members of a business ecosystem.[43]
When parts of a publicly presented API are subject to change and thus not stable,
such parts of a particular API should be documented explicitly as "unstable". For
example, in the Google Guava library, the parts that are considered unstable, and
that might change soon, are marked with the Java annotation @Beta.[49]
A public API can sometimes declare parts of itself as deprecated or rescinded. This
usually means that part of the API should be considered a candidate for being
removed, or modified in a backward incompatible way. Therefore, these changes allow
developers to transition away from parts of the API that will be removed or not
supported in the future.[50]
Client code may contain innovative or opportunistic usages that were not intended
by the API designers. In other words, for a library with a significant user base,
when an element becomes part of the public API, it may be used in diverse ways.[51]
On February 19, 2020, Akamai published their annual �State of the Internet� report,
showcasing the growing trend of cybercriminals targeting public API platforms at
financial services worldwide. From December 2017 through November 2019, Akamai
witnessed 85.42 billion credential violation attacks. About 20%, or 16.55 billion,
were against hostnames defined as API endpoints. Of these, 473.5 million have
targeted financial services sector organizations.[52]
Documentation
API documentation describes what services an API offers and how to use those
services, aiming to cover everything a client would need to know for practical
purposes.
Restrictions and limitations on how the API can be used are also covered by the
documentation. For instance, documentation for an API function could note that its
parameters cannot be null, that the function itself is not thread safe.[56] Because
API documentation tends to be comprehensive, it is a challenge for writers to keep
the documentation updated and for users to read it carefully, potentially yielding
bugs.[48]
API documentation can be enriched with metadata information like Java annotations.
This metadata can be used by the compiler, tools, and by the run-time environment
to implement custom behaviors or custom handling.[57]
Dispute over copyright protection for APIsprograms that use a given API, it is
possible to infer the typical usages, as well the required contracts and
directives.[58] Then, templates can be used to generate natural language from the
mined data.