Application Programming Interface (API): Difference between revisions

From GM-RKB
Jump to navigation Jump to search
No edit summary
No edit summary
 
(16 intermediate revisions by 4 users not shown)
Line 1: Line 1:
An [[Application Programming Interface (API)]] is a [[computing system interface]] that can be used for building a [[software application]].
An [[Application Programming Interface (API)]] is a [[computing system interface]] that can be used for building a [[software application]] (through standardized [[program interaction]] and [[component communication]]).
* <B>AKA:</B> [[Software API]].
* <B>Context:</B>
* <B>Context:</B>
** It can be specified in an [[API Specification]].
** It can (typically) expose [[API Function]] through [[API subroutine]]s and [[API endpoint]]s.
** It can be tested by a [[API Testing Task]] (a [[component test]], possibly an [[integration test]])).
** It can (typically) define [[API Operation]] via [[method]]s and [[protocol]]s.
**
** It can (typically) implement [[API Security]] using [[access control]].
* <B>Example(s):</B>
** It can (typically) handle [[API Version]] through [[version strategy]].
** a [[REST API]].
** It can (typically) support [[API Documentation]] via [[interface description]].
** a [[Web API]].
** It can (typically) measure [[API Performance]] through [[performance metric]]s.
**
** It can (typically) implement [[API Error Handling]] through [[error response]]s.
* <B>Counter-Example(s):</B>
** It can (typically) manage [[API Lifecycle]] through [[lifecycle phase]]s.
** a [[devkit/SDK]].
** It can (typically) enable [[Cross-Platform Integration]] through [[platform-agnostic protocol]]s.
** a [[User Interface]].
** It can (typically) collect [[API Analytics]] through [[monitoring system]]s.
* <B>See:</B> [[Software Subroutine]], [[Software Component]], [[Library (Computing)]], [[Software Framework]].
** It can (often) be specified by an [[API Specification]], which describes its functionalities, methods, and data formats.
** It can (often) be tested via an [[API Testing Task]] (often a [[component test]]).
** It can (often) hide [[internal detail]]s behind [[interface contract]]s.
** It can (often) enable [[system interoperability]] through [[standard protocol]]s.
** It can (often) provide [[backward compatibility]] using [[version control]].
** It can (often) optimize [[API Response Time]] via [[caching strategy]].
** It can (often) provide [[API Status Code]] for [[error classification]].
** It can (often) support [[API Deprecation]] via [[sunset policy]].
** It can (often) support [[Multiple Client Language]]s via [[language binding]]s.
** It can (often) track [[API Usage Pattern]]s via [[usage metric]]s.
** ...
** It can range from being a [[Simple API]] to being a [[Complex API]], depending on its [[functionality scope]].
** It can range from being a [[Single-Purpose API]] to being a [[Multipurpose API]], depending on its [[usage scope]].
** It can range from being a [[Synchronous API]] to being an [[Asynchronous API]] (that implements [[API callback]]s), depending on its [[interaction pattern]].
** It can range from being a [[Monolithic API]] to being a [[Microservice API]], depending on its [[architectural style]].
** It can range from being a [[Low-Latency API]] to being a [[High-Throughput API]], depending on its [[performance requirement]]s.
** It can range from being a [[Basic Error Handler]] to being a [[Comprehensive Error Handler]], depending on its [[error handling strategy]].
** It can range from being an [[Experimental API]] to being a [[Production API]], depending on its [[maturity level]].
** It can range from being a [[Platform-Specific API]] to being a [[Universal API]], depending on its [[platform support]].
** It can range from being a [[Basic Monitored API]] to being an [[Advanced Monitored API]], depending on its [[monitoring capability]].
** ...
** It can utilize mechanisms like [[Webhooks]], [[WebSockets]], [[Server-Sent Events (SSE)]], and [[Message Queues]] for [[asynchronous communication]].
** It can be behind an [[API Gateway]] for [[request management]].
** It can foster [[Event-Driven Architecture]] through [[Asynchronous APIs]].
** It can enable [[Non-Blocking Operation]]s in [[Asynchronous APIs]], allowing the [[client]] to perform other [[task]]s while waiting for the [[server]].
** It can use protocols such as [[HTTP]], [[MQTT]], [[AMQP]], and [[Kafka]] in [[Asynchronous APIs]].
** ...
* <B>Examples:</B>
** [[Service Integration API]]s, such as:
*** [[Social Media API]]s, such as:
**** [[Twitter API]] for [[social content management]] and [[analytics tracking]] (as of 2024).
**** [[Facebook Graph API]] for [[social graph access]] and [[user data integration]] (as of 2024).
**** [[Instagram API]] for [[media content integration]] and [[business feature]]s (as of 2024).
**** [[LinkedIn API]] for [[professional network integration]] and [[business connectivity]] (as of 2024).
*** [[Payment Processing API]]s, such as:
**** [[Stripe API]] for [[payment processing]] and [[subscription management]] (as of 2024).
**** [[PayPal API]] for [[transaction processing]] and [[payment integration]] (as of 2024).
**** [[Square API]] for [[point of sale integration]] and [[payment handling]] (as of 2024).
**** [[Adyen API]] for [[global payment processing]] and [[payment method integration]] (as of 2024).
*** [[Communication API]]s, such as:
**** [[Twilio API]] for [[programmable communication]] and [[messaging service]]s (as of 2024).
**** [[SendGrid API]] for [[email delivery]] and [[marketing automation]] (as of 2024).
**** [[Mailchimp API]] for [[email campaign management]] and [[audience targeting]] (as of 2024).
**** [[MessageBird API]] for [[global messaging]] and [[voice service]]s (as of 2024).
** [[Infrastructure API]]s, such as:
*** [[Mapping API]]s, such as:
**** [[Google Maps API]] for [[location service]]s and [[map integration]] (as of 2024).
**** [[Mapbox API]] for [[custom map rendering]] and [[geospatial analysis]] (as of 2024).
**** [[OpenStreetMap API]] for [[open source mapping]] and [[location data]] (as of 2024).
**** [[Here Maps API]] for [[enterprise mapping solution]]s and [[fleet management]] (as of 2024).
*** [[Cloud Storage API]]s, such as:
**** [[Dropbox API]] for [[file management]] and [[content sharing]] (as of 2024).
**** [[Google Drive API]] for [[document storage]] and [[collaboration tool]]s (as of 2024).
**** [[Box API]] for [[enterprise content management]] and [[security control]]s (as of 2024).
**** [[OneDrive API]] for [[personal storage integration]] and [[file synchronization]] (as of 2024).
*** [[Cloud Platform API]]s, such as:
**** [[AWS API]] for [[cloud resource management]] and [[service orchestration]] (as of 2024).
**** [[Google Cloud API]] for [[cloud infrastructure]] and [[platform service]]s (as of 2024).
**** [[Azure API]] for [[microsoft cloud integration]] and [[enterprise solution]]s (as of 2024).
** [[Development Tool API]]s, such as:
*** [[Version Control API]]s, such as:
**** [[GitHub API]] for [[repository management]] and [[development workflow]] (as of 2024).
**** [[GitLab API]] for [[code management]] and [[CI/CD pipeline]]s (as of 2024).
**** [[Bitbucket API]] for [[source control integration]] and [[team collaboration]] (as of 2024).
*** [[Monitoring API]]s, such as:
**** [[New Relic API]] for [[application performance monitoring]] and [[system metric]]s (as of 2024).
**** [[Datadog API]] for [[infrastructure monitoring]] and [[analytics platform]] (as of 2024).
**** [[Grafana API]] for [[monitoring visualization]] and [[dashboard creation]] (as of 2024).
*** [[Testing API]]s, such as:
**** [[Selenium API]] for [[web automation testing]] and [[browser interaction]] (as of 2024).
**** [[Postman API]] for [[API testing]] and [[documentation generation]] (as of 2024).
**** [[JUnit API]] for [[unit testing framework]] and [[test automation]] (as of 2024).
** ...
** [[API Architecture Style]]s, such as:
*** [[REST API Implementation]]s, such as:
**** [[RESTful Service]] for [[resource management]] using [[HTTP method]]s.
**** [[REST Endpoint]] for [[CRUD operation]]s using [[URL pattern]]s.
*** [[GraphQL API Implementation]]s, such as:
**** [[GraphQL Query]] for [[flexible data fetching]] using [[query language]].
**** [[GraphQL Mutation]] for [[data modification]] using [[operation type]]s.
*** [[gRPC API Implementation]]s, such as:
**** [[gRPC Service]] for [[high-performance communication]] using [[protocol buffer]]s.
**** [[gRPC Stream]] for [[bidirectional communication]] using [[streaming protocol]]s.
** ...
* <B>Counter-Examples:</B>
** [[Software Development Kit]], which provides [[development tool]]s rather than just [[interface]].
** [[User Interface]], which interfaces with [[human user]]s rather than [[program]]s.
** [[Library Implementation]], which provides [[code implementation]] rather than just [[interface specification]].
* <B>See:</B> [[API Documentation]], [[Communication Protocol]], [[Data Exchange]], [[Microservices]], [[Middleware]], [[Service-Oriented Architecture]], [[Software Development Kit]], [[Web Service]], [[API Specification]], [[API Testing]], [[API Security]], [[API Gateway]], [[API Management]], [[API Version]].


----
----
Line 17: Line 106:


== References ==
== References ==
=== 2024-12-30 ===
* Perplexity.ai
** [[Question]]: What is an [[Application Programming Interface|API]]? Explain its [[API Key Characteristic|key characteristics]], [[API Component|components]], and popular [[API Example|examples]]. Include information about different [[API Implementation Type|implementation types]] and how they enable [[Software Application Communication|communication between applications]].
** [[Answer]]: An [[Application Programming Interface|API]] is a set of [[API Rule|rules]], [[API Protocol|protocols]], and [[API Tool|tools]] that enables different [[Software Application|software applications]] to [[Software Application Communication|communicate]] and [[Data Exchange|exchange data]] with each other. It acts as a [[Software Intermediary|software intermediary]] that defines how [[Software Application|applications]] can request and exchange [[API Service|services]], [[API Feature|features]], and [[Application Data|data]].
*** [[API Key Characteristic|Key Characteristics]]:
**** [[API Purpose|Purpose]] and [[API Function|Function]]:
***** Serves as a [[Software Application Connection|connection]] between [[Computer System|computers]] or [[Computer Program|computer programs]].
***** Hides [[Internal System Detail|internal system details]] while exposing only [[API Exposed Component|necessary parts]] to [[Software Programmer|programmers]].
***** Enables [[Secure Data Exchange|secure]] and [[Controlled Data Exchange|controlled]] [[Data Exchange|data exchange]] between [[Software Application|applications]].
**** [[API Component|Components]]:
***** [[API Specification|Specification]]: Defines how [[Information Exchange|information]] is exchanged between [[Computer Program|programs]].
***** [[API Implementation|Implementation]]: The [[Software Interface|software interface]] that follows the [[API Specification|specification]].
***** [[API Documentation|Documentation]]: [[Technical Instruction|Technical instructions]] explaining how to work with the [[API]].
*** [[Popular API Example|Popular API Examples]]:
**** [[Social Media API|Social Media]]:
***** [[Twitter API]]: Enables [[Twitter Bot Creation|bot creation]], [[Social Media Post Scheduling|scheduling posts]], and [[Social Media Analytics|analytics tracking]].
***** [[Instagram API]]: Allows [[Business Integration|businesses]] to integrate [[Instagram Feed|Instagram feeds]] with [[Website|websites]] and enable [[Direct Shopping|direct shopping]].
**** [[Technology Service API|Technology Services]]:
***** [[Google Maps API]]: Enables embedding [[Digital Map|maps]] into [[Website|websites]] and [[Software Application|applications]].
***** [[PayPal API]]: Handles [[Transaction Workflow|transaction workflows]], including [[Payment Processing|payments]], [[Subscription Management|subscriptions]], and [[Invoice Management|invoicing]].
***** [[Twilio API]]: Provides access to [[Communication Technology Integration|communication technology integration]].
**** [[Cloud Service API|Cloud Services]]:
***** [[Dropbox API]]: Enables [[Document Storage|document storage]] and [[Document Management|management functionality]].
***** [[MongoDB API]]: Provides [[Database Operation Interface|database operations interface]] for [[NoSQL Database|NoSQL databases]].
*** [[API Implementation Type|Implementation Types]]:
**** [[Data API]]: Connect [[Software Application|applications]] with [[Database System|database systems]].
**** [[Operating System API]]: Define [[Application Resource Usage|application usage]] of [[Operating System Resource|OS resources]].
**** [[Remote API]]: Enable [[Application Interaction|interaction]] between [[Software Application|applications]] on different [[Computing Device|devices]].
**** [[Web API]]: Transfer [[Application Data|data]] and [[API Functionality|functionality]] over [[HTTP Protocol|HTTP protocol]].
** Citations:
[1] https://www.ibm.com/think/topics/api
[2] https://en.wikipedia.org/wiki/Api
[3] https://blog.postman.com/top-30-apis-for-best-developer-experience/
[4] https://blog.dreamfactory.com/6-examples-of-apis-we-use-in-our-everyday-lives
[5] https://aws.amazon.com/what-is/api/
[6] https://katalon.com/resources-center/blog/api-examples
[7] https://www.techtarget.com/searchapparchitecture/definition/application-program-interface-API
[8] https://www.talend.com/resources/what-is-an-api/
[9] https://www.mulesoft.com/api/what-is-an-api
[10] https://www.altexsoft.com/blog/what-is-api-definition-types-specifications-documentation/
=== 2024 ===
* (Wikipedia, 2024) ⇒ https://en.wikipedia.org/wiki/API Retrieved:2024-6-20.
** An () is a way for two or more [[computer program]]s or components to communicate with each other. It is a type of [[software interface]], offering a service to other pieces of [[software]].  A document or standard that describes how to build or use such a connection or interface is called an . A computer system that meets this standard is said to or an API. The term API may refer either to the specification or to the implementation. Whereas a system's [[user interface]] dictates how its end-users interact with the system in question, its API dictates how to write code that takes advantage of that system's capabilities. 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]] who is incorporating it into the 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 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 these calls, meaning that it explains how to use or implement them. One purpose of APIs is to [[information hiding|hide the internal details]] of how a system works, exposing only those parts that a programmer will find useful, and keeping them consistent even if the internal details change later. An API may be custom-built for a particular pair of systems, or it may be a shared standard allowing [[interoperability]] among many systems. There are APIs for [[programming language]]s, [[library (computing)|software libraries]], computer [[operating system]]s, and [[computer hardware]]. APIs originated in the 1940s, though the term did not emerge until the 1960s and 1970s. Contemporary usage of the term API often refers to [[web API]]s,<ref name="Lane2019"/> which allow communication between computers that are joined by the [[Internet Protocol television|internet]]. Recent developments in APIs have led to the rise in popularity of [[microservices]], which are loosely coupled services accessed through public APIs.  APIs should be [[Software versioning|versioned]]. There are two common versioning strategies:
*** Additive change strategy: new features are added without modifying existing ones. Any update must be [[Backward compatibility|backward compatible]]. This strategy is suitable for small projects with low rate of change.
*** Explicit version strategy: this strategy allows making any changes including breaking changes. This strategy is suitable for complex applications and complex changes.
<references/>


=== 2016 ===
=== 2016 ===
* (Wikipedia, 2016) ⇒ http://wikipedia.org/wiki/Application_programming_interface Retrieved:2016-4-29.
* (Wikipedia, 2016) ⇒ http://wikipedia.org/wiki/Application_programming_interface Retrieved:2016-4-29.
** In [[computer programming]], an '''application programming interface''' ('''API''') is a set of [[Subroutine|routines]], protocols, and tools for building [[software application|software and applications.]]         <P>        An API expresses a [[software component]] in terms of its operations, inputs, outputs, and underlying types, defining functionalities that are independent of their respective implementations, which allows <nowiki>definitions and</nowiki> implementations to vary without compromising the interface. A good API makes it easier to develop a program by providing all the building blocks, which are then put together by the programmer.        <P>        An API may be for a web-based system, operating system, or database system, and it provides facilities to develop applications for that system using a given programming language. As an example, a programmer who develops apps for Android may use an Android API to [[interact with]]  hardware, like the front camera of an Android-based device.        <P>        In addition to accessing [[database]]s or [[computer hardware]] like [[hard disk drive]]s or [[video card]]s, an API can ease the work of programming [[GUI]] components. For example, an API can facilitate integration of new features into existing applications (a so-called "plug-in API"). An API can also assist otherwise distinct applications with sharing data, which can help to integrate and enhance the functionalities of the applications.        <P>        APIs often come in the form of a [[Library (computing)|library]] that includes specifications for [[subroutine|routines]], [[data structure]]s, [[Class (computer programming)|object classes]], and variables. In other cases, notably [[SOAP]] and [[REST]] [[Web service|services]], an API is simply a specification of [[Remote procedure call|remote calls]] exposed to the API consumers. An API specification can take many forms, including an International Standard, such as [[POSIX]], vendor documentation, such as the [[Microsoft]] [[Windows API]], or the [[Library (computing)|libraries]] of a [[programming language]], e.g. the [[Standard Template Library]] in [[C++]] or the [[List of Java APIs|Java API]]s. An API differs from an [[application binary interface]] (ABI) in that an API is source code-based while an ABI is a binary interface. For instance [[POSIX]] is an API, while the [[Linux Standard Base]] provides an ABI.  APIs are one of the most common ways technology companies integrate with each other. Those that provide and use APIs are considered as being members of a business ecosystem.
** In [[computer programming]], an '''application programming interface''' ('''API''') is a set of [[Subroutine|routines]], protocols, and tools for building [[software application|software and applications.]]         <P>        An API expresses a [[software component]] in terms of its operations, inputs, outputs, and underlying types, defining functionalities that are independent of their respective implementations, which allows <nowiki>definitions and</nowiki> implementations to vary without compromising the interface. A good API makes it easier to develop a program by providing all the building blocks, which are then put together by the programmer.        ...


----
----
__NOTOC__
__NOTOC__
[[Category:Concept]]
[[Category:Concept]]
[[Category:Software Development]]
[[Category:Integration]]
[[Category:Quality Silver]]

Latest revision as of 23:28, 30 December 2024

An Application Programming Interface (API) is a computing system interface that can be used for building a software application (through standardized program interaction and component communication).



References

2024-12-30

[1] https://www.ibm.com/think/topics/api
[2] https://en.wikipedia.org/wiki/Api
[3] https://blog.postman.com/top-30-apis-for-best-developer-experience/
[4] https://blog.dreamfactory.com/6-examples-of-apis-we-use-in-our-everyday-lives
[5] https://aws.amazon.com/what-is/api/
[6] https://katalon.com/resources-center/blog/api-examples
[7] https://www.techtarget.com/searchapparchitecture/definition/application-program-interface-API
[8] https://www.talend.com/resources/what-is-an-api/
[9] https://www.mulesoft.com/api/what-is-an-api
[10] https://www.altexsoft.com/blog/what-is-api-definition-types-specifications-documentation/

2024

  • (Wikipedia, 2024) ⇒ https://en.wikipedia.org/wiki/API Retrieved:2024-6-20.
    • An () is a way for two or more computer programs or components to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build or use such a connection or interface is called an . A computer system that meets this standard is said to or an API. The term API may refer either to the specification or to the implementation. Whereas a system's user interface dictates how its end-users interact with the system in question, its API dictates how to write code that takes advantage of that system's capabilities. 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 who is incorporating it into the 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 that portion of the API. The calls that make up the API are also known as subroutines, methods, requests, or endpoints. An API specification these calls, meaning that it explains how to use or implement them. One purpose of APIs is to hide the internal details of how a system works, exposing only those parts that a programmer will find useful, and keeping them consistent even if the internal details change later. An API may be custom-built for a particular pair of systems, or it may be a shared standard allowing interoperability among many systems. There are APIs for programming languages, software libraries, computer operating systems, and computer hardware. APIs originated in the 1940s, though the term did not emerge until the 1960s and 1970s. Contemporary usage of the term API often refers to web APIs,[1] which allow communication between computers that are joined by the internet. Recent developments in APIs have led to the rise in popularity of microservices, which are loosely coupled services accessed through public APIs. APIs should be versioned. There are two common versioning strategies:
      • Additive change strategy: new features are added without modifying existing ones. Any update must be backward compatible. This strategy is suitable for small projects with low rate of change.
      • Explicit version strategy: this strategy allows making any changes including breaking changes. This strategy is suitable for complex applications and complex changes.
  1. Cite error: Invalid <ref> tag; no text was provided for refs named Lane2019

2016

  • (Wikipedia, 2016) ⇒ http://wikipedia.org/wiki/Application_programming_interface Retrieved:2016-4-29.
    • In computer programming, an application programming interface (API) is a set of routines, protocols, and tools for building software and applications.

      An API expresses a software component in terms of its operations, inputs, outputs, and underlying types, defining functionalities that are independent of their respective implementations, which allows definitions and implementations to vary without compromising the interface. A good API makes it easier to develop a program by providing all the building blocks, which are then put together by the programmer. ...