Content deleted Content added
Tag: Reverted |
TurboSuperA+ (talk | contribs) unsourced addition, possibly LLM-generated |
||
(18 intermediate revisions by 9 users not shown) | |||
Line 3:
{{hatnote|"Api.php" redirects here. For the Wikipedia API, see {{Plain link|[Special:ApiHelp]}}.|selfref=true}}
An '''application programming interface''' ('''API''') is a connection
In contrast to a [[user interface]], which connects a computer to a person, an application programming interface connects computers or pieces of software to each other. It is not intended to be used directly by a person (the [[end user]]) other than a [[computer programmer]]<ref name=":0" /> who is incorporating it into software. An API is often made up of different parts which act as tools or services that are available to the programmer. A program or a programmer that uses one of these parts is said to ''call'' that portion of the API. The calls that make up the API are also known as [[subroutine]]s, methods, requests, or [[communication endpoint|endpoint]]s. An API specification ''defines'' these calls, meaning that it explains how to use or implement them.
Line 76:
}}
</ref>
===Operating systems===
Line 167 ⟶ 168:
==Design==
The design of an API has significant impact on its usage.<ref name="Clarke4"/> 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.<ref name="Parnas72">{{Cite journal |last=Parnas |first=D.L. |date=1972 |title=On the Criteria To Be Used in Decomposing Systems into Modules |url=https://www.win.tue.nl/~wstomv/edu/2ip30/references/criteria_for_modularization.pdf |journal=Communications of the ACM |volume=15 |issue=12 |pages=1053–1058 |doi=10.1145/361598.361623|s2cid=53856438 }}</ref> Thus, the design of an API attempts to provide only the tools a user would expect.<ref name="Clarke4" /> The design of programming interfaces represents an important part of [[software architecture]], the organization of a complex piece of software.<ref name="GarlanShaw94">{{Cite journal |last1=Garlan |first1=David |last2=Shaw |first2=Mary |date=January 1994 |title=An Introduction to Software Architecture |url=https://www.cs.cmu.edu/afs/cs/project/able/ftp/intro_softarch/intro_softarch.pdf |journal=Advances in Software Engineering and Knowledge Engineering |volume=1 |access-date=8 August 2016}}</ref>
==Release policies==
|