0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是API,不同場(chǎng)景中的API

電子工程師 ? 來(lái)源:Astroys ? 作者:Astroys ? 2022-08-10 11:20 ? 次閱讀

API(Application Programming Interface)有點(diǎn)類似于肯德基汽車穿梭窗口。但在代碼中,它們接受輸入并提供可預(yù)測(cè)的輸出。

在其核心,API是一組接受輸入并給出輸出的代碼

大多數(shù)現(xiàn)代應(yīng)用程序(如Excel)都是一堆API組成的

有時(shí),公司會(huì)公開他們的部分API,比如Twitter或谷歌地圖

API是軟件中比較令人困惑的概念之一,因?yàn)樗鼈兛梢源砗芏嗖煌臇|西

API為大多數(shù)現(xiàn)代軟件開發(fā)提供了強(qiáng)大的功能,且是可以聰明地討論代碼的關(guān)鍵部分。

什么是API(理論上)?

如果你想理解API,需要進(jìn)行一個(gè)重要的區(qū)分:一個(gè)是API的技術(shù)定義,然后是人們?cè)趯?duì)話中如何實(shí)際使用這個(gè)概念。它們非常不同,這就是為什么這些東西會(huì)讓人很困惑。讓我們先來(lái)解決技術(shù)定義。

6cbbec46-17df-11ed-ba43-dac502259ad0.jpg

API是一組接受特定輸入并給出特定輸出的邏輯。幾個(gè)例子:

如果向谷歌地圖API提供一個(gè)地址作為輸入,它的輸出是該地址的經(jīng)緯度坐標(biāo)

如果給Javascript Array.Sort API一個(gè)數(shù)組作為輸入,它將這些數(shù)字作為輸出進(jìn)行排序

如果你給Lyft Driver API一個(gè)起始地址和結(jié)束地址作為輸入,它會(huì)找到最匹配的司機(jī)作為輸出

當(dāng)工程師構(gòu)建代碼模塊來(lái)做特定的事情時(shí),他們清楚地定義了這些模塊的輸入和輸出:這就是API的真正含義。當(dāng)你給一個(gè)API一堆輸入來(lái)獲得你想要的輸出時(shí),它被稱為調(diào)用API。 輸入 API通常會(huì)確切地告訴你它需要什么樣的輸入。如果你嘗試用你的名字作為谷歌地圖API的輸入,那不會(huì)有什么效果;它被設(shè)計(jì)用來(lái)完成一個(gè)非常特定的任務(wù)(將地址轉(zhuǎn)換為坐標(biāo)),因此它只處理非常特定類型的數(shù)據(jù)。有些API在輸入方面非常麻煩,并可能要求你以特定的方式格式化該地址。 輸出 就像輸入一樣,API給你特定的輸出。假設(shè)你為谷歌地圖API提供了正確的輸入(一個(gè)地址),它將始終以完全相同的格式給你回饋?zhàn)鴺?biāo)。還有非常具體的錯(cuò)誤處理:如果API不能找到你輸入的地址的坐標(biāo),它會(huì)告訴你確切的原因。 這些都是技術(shù)和理論上的東西。 那些應(yīng)用只是API的集合 關(guān)于現(xiàn)代軟件,最值得理解的一點(diǎn)是,你最喜歡的那些應(yīng)用只是一堆API,上面有一個(gè)漂亮的界面,稱為前端。你使用的大多數(shù)應(yīng)用都是建立在這種前端/后端范例之上的。 后端 公司從為用戶在應(yīng)用中需要做的所有重要事情構(gòu)建API開始。對(duì)于Gmail,Google從接收、顯示、發(fā)送和轉(zhuǎn)發(fā)郵件的API開始;但這些都是通過(guò)代碼調(diào)用的。這些API以及使用它們的時(shí)間和方式的邏輯是應(yīng)用的后端。就像汽車引擎蓋下正在發(fā)生的事。如果你聽說(shuō)過(guò)后端工程師,那就是主要處理這些內(nèi)部組件的開發(fā)者。 前端 所有這些后端API只能通過(guò)代碼來(lái)使用,這并不是你想在iPhone上查看電子郵件時(shí)遇到的情況。這就是為什么公司要為他們的應(yīng)用創(chuàng)建前端:圖形用戶界面使應(yīng)用美觀且可用,而不需要編寫代碼。下面是Gmail中的工作方式:

你的收件箱顯示一排排的電子郵件和主題行:前端將這些后端的電子郵件數(shù)據(jù)進(jìn)行了很好的格式化處理

你可以點(diǎn)擊星形圖標(biāo)來(lái)標(biāo)記一封郵件:在后端,這將觸發(fā)一個(gè)“標(biāo)記郵件”的API

前端的大多數(shù)交互都被轉(zhuǎn)換成后端的API調(diào)用,這就是應(yīng)用軟件101。一旦我開始理解這個(gè)模型,就更容易理解開發(fā)者如何在對(duì)話中實(shí)際使用“API”的方式了。

6cdeb3b6-17df-11ed-ba43-dac502259ad0.jpg

什么是API(實(shí)際上)?

實(shí)際上,我發(fā)現(xiàn)人們?cè)谌N不同的場(chǎng)景中使用“API”,它們都代表著不同的東西。但從理論上講,它們都是一樣的,符合我們之前的定義。它們都是一樣的,但又有所不同。

公司內(nèi)部API

當(dāng)公司構(gòu)建他們的應(yīng)用時(shí),他們把它們?cè)O(shè)計(jì)成一組交互的API。最容易理解的例子是Lyft(或者Uber)。你可能想在Lyft應(yīng)用中做一些事情,它們?cè)谀缓蠖紩?huì)觸發(fā)不同的API。

6cfcd288-17df-11ed-ba43-dac502259ad0.jpg

這種模式幾乎適用于你使用的所有應(yīng)用:你在應(yīng)用中采取的操作將觸發(fā)公司內(nèi)部API,這些API實(shí)際上完成了讓你的請(qǐng)求得到滿足的工作。公司內(nèi)部API也是分層的:雖然可能有一個(gè)廣泛的“預(yù)約乘車”API,但在這個(gè)“引擎蓋”下有一堆較小的API來(lái)完成它:查找司機(jī)、預(yù)約司機(jī)、驗(yàn)證信用卡、與用戶溝通等。

公共API

Lyft的API都不是公開的:它們只是Lyft在后端為你提供服務(wù)的方式。但有時(shí),公司會(huì)提供一些他們的API,并告訴你如何使用它們。Twitter的API就是一個(gè)很好的例子。

通常,你使用Twitter應(yīng)用,它會(huì)對(duì)Twitter內(nèi)部API進(jìn)行一些API調(diào)用,比如顯示提要、發(fā)送回復(fù)和搜索(這就是我們剛剛談到的:前端和后端)。但你也可以在Twitter應(yīng)用之外通過(guò)代碼調(diào)用這些API。例如,有一個(gè)抓取用戶時(shí)間軸的API,你可以使用它來(lái)查看用戶的時(shí)間軸(他們的推文),該API以JSON格式返回那些推文,這是一種特殊的文本格式。

這些公共API讓人們?cè)赥witter上構(gòu)建應(yīng)用。有一些非?;镜臇|西,比如筆者做的這個(gè)學(xué)校項(xiàng)目,收集關(guān)于紐約大學(xué)的推文,分析他們的情緒,但也有一些相當(dāng)高級(jí)的東西,比如Flock,它可以讓你搜索你的訂閱者。

代碼接口

我們剛剛看到的前兩類API都是功能性的,它們通常完成一些實(shí)用且容易理解的事情,比如提供坐標(biāo)或預(yù)訂乘車。但是開發(fā)者也使用“API”來(lái)指代更底層級(jí)別的輸入和輸出,比如代碼中的函數(shù)。

Javascript的array.sort()方法就是一個(gè)很好的例子。它是一個(gè)接受數(shù)字或字母列表作為輸入的API,然后對(duì)它們進(jìn)行排序,并將它們作為輸出返回給你。還有其他與數(shù)組相關(guān)的API,比如添加(array.push)和移除(array.pop)東西,過(guò)濾(array.filter),以及獲取數(shù)組的大?。╝rray.length)。當(dāng)你用Javascript的時(shí)候,你會(huì)用到這些。

因此,當(dāng)人們談?wù)揂PI時(shí),我們并不總是清楚人們到底在談?wù)撌裁?,特別是因?yàn)殚_發(fā)者用這個(gè)詞指代很多不同的東西。如果你感到困惑,就直接問(wèn)。答案很可能屬于這三類。

6d1ef782-17df-11ed-ba43-dac502259ad0.jpg

編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1553

    瀏覽量

    63262

原文標(biāo)題:API到底指的是什么?

文章出處:【微信號(hào):Astroys,微信公眾號(hào):Astroys】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 0人收藏

    評(píng)論

    相關(guān)推薦

    OpenHarmony 應(yīng)用開發(fā)SDK、API 與基礎(chǔ)工具

    。C API 也包含在鴻蒙SDK ,方便開發(fā)者使用 C 或者 C++語(yǔ)言實(shí)現(xiàn)應(yīng)用相應(yīng)功能。 C API 只覆蓋了部分鴻蒙基礎(chǔ)底層能力,如 libc,圖形庫(kù),窗口系統(tǒng),多媒體,壓縮庫(kù)等,并沒(méi)有完全提供
    發(fā)表于 09-19 15:45

    vc++ api函數(shù) (Windows API大全)

    Windows API大全,本書主要介紹VC++里API函數(shù)及其用法-WindowsAPI Daquan, the book introduces VC Lane API function
    發(fā)表于 10-14 11:45 ?32次下載

    JDBCTM 2.0 API

    The JDBCTM API is the JavaTM standard call-level API for database access. This documentcontains the final specification of the JDBC 2.0
    發(fā)表于 10-14 17:42 ?6次下載

    使用英特爾QuickAssist技術(shù)API

    概述使用英特爾?QuickAssist技術(shù)包含的API。
    的頭像 發(fā)表于 10-30 06:36 ?3341次閱讀

    REST API是什么,如何使用REST端口

    REST API。知行之橋API端口主要支持對(duì)象就是REST API。 什么是REST API? 首先,REST是一種架構(gòu)風(fēng)格。REST
    的頭像 發(fā)表于 02-17 18:00 ?9740次閱讀
    REST <b class='flag-5'>API</b>是什么,如何使用REST端口

    Compose的動(dòng)畫API概覽及使用方法

    我們將通過(guò)本文介紹 Compose 的一些動(dòng)畫 API,并探討如何有效地使用它們。Compose 的動(dòng)畫 API 是我們構(gòu)想的全新 API
    的頭像 發(fā)表于 06-06 17:48 ?2530次閱讀

    如何通過(guò)ApiFox來(lái)構(gòu)建API場(chǎng)景測(cè)試

    在開發(fā)前后臺(tái)分離項(xiàng)目并且通過(guò)不同團(tuán)隊(duì)來(lái)實(shí)現(xiàn)的時(shí)候,如何將后臺(tái)設(shè)計(jì)的 API 準(zhǔn)確的傳達(dá)到前臺(tái),是一個(gè)非常重要的工作。為了簡(jiǎn)化這個(gè)過(guò)程,開源社區(qū)做了很多努力,比如 protobuf技術(shù),swagger
    的頭像 發(fā)表于 09-01 10:48 ?1791次閱讀

    API+DevOps:華為云API Arts一體化平臺(tái),端到端呵護(hù)您的API

    API+ | 以API-First理論為基礎(chǔ),以API為核心構(gòu)建數(shù)字化生態(tài) 摘要:華為云API Arts是API全生命周期一體化協(xié)作平臺(tái),支
    的頭像 發(fā)表于 02-17 19:05 ?1259次閱讀

    API+DevOps:華為云API Arts一體化平臺(tái),端到端呵護(hù)您的API

    華為云API Arts是API全生命周期一體化協(xié)作平臺(tái),支持開發(fā)者一站式高效實(shí)現(xiàn)API設(shè)計(jì)、API開發(fā)、API測(cè)試、
    的頭像 發(fā)表于 03-01 15:45 ?915次閱讀
    <b class='flag-5'>API</b>+DevOps:華為云<b class='flag-5'>API</b> Arts一體化平臺(tái),端到端呵護(hù)您的<b class='flag-5'>API</b>

    為什么需要 API 網(wǎng)關(guān)?

    API 網(wǎng)關(guān)是 API 全生命周期管理的關(guān)鍵基礎(chǔ)組件,負(fù)責(zé)生產(chǎn)環(huán)境 API 的配置、發(fā)布、版本回滾、安全、負(fù)載均衡等。API 網(wǎng)關(guān)是所有終
    的頭像 發(fā)表于 05-04 17:47 ?945次閱讀
    為什么需要 <b class='flag-5'>API</b> 網(wǎng)關(guān)?

    企業(yè)怎么選擇API網(wǎng)關(guān)

    ? 一、API網(wǎng)關(guān)的用處 API網(wǎng)關(guān)我的分析中會(huì)用到以下三種場(chǎng)景。 1、Open API 企業(yè)需要將自身數(shù)據(jù)、能力等作為開發(fā)平臺(tái)向外開放,通常會(huì)以rest的方式向外提供。最好的例子就是
    的頭像 發(fā)表于 05-23 11:05 ?788次閱讀
    企業(yè)怎么選擇<b class='flag-5'>API</b>網(wǎng)關(guān)

    api接口怎么使用

    本文就從API接口的維度,淺析API的概念以及為什么要了解它 一、API的概念 API,官方定義為應(yīng)用程序編程接口。就是把是一些預(yù)先定義的接口,用來(lái)提供應(yīng)用程序與開發(fā)人員基于某軟件或硬
    的頭像 發(fā)表于 05-24 14:44 ?1605次閱讀

    api網(wǎng)關(guān) kong 教程入門

    統(tǒng)一權(quán)限控制、接口請(qǐng)求訪問(wèn)日志統(tǒng)計(jì) 安全,是保護(hù)內(nèi)部服務(wù)而設(shè)計(jì)的一道屏障 開源-最大好處 當(dāng)然也有一個(gè)很大的缺點(diǎn),api-gw很可能成為性能瓶頸,因?yàn)樗械恼?qǐng)求都經(jīng)過(guò)這里,可以通過(guò)橫向擴(kuò)展和限流解決這個(gè)問(wèn)題。 在眾多API GATEWAY框架
    的頭像 發(fā)表于 11-10 11:39 ?1026次閱讀
    <b class='flag-5'>api</b>網(wǎng)關(guān) kong 教程入門

    API :軟件程序間溝通的橋梁

    或許我們不清楚API是什么,但在現(xiàn)實(shí)生活,API的應(yīng)用場(chǎng)景卻遠(yuǎn)遠(yuǎn)超出了我們的想象。舉個(gè)例子來(lái)說(shuō),當(dāng)我們想要搜索某個(gè)IP地址時(shí),通常是利用API
    的頭像 發(fā)表于 08-27 15:54 ?415次閱讀

    RAGFlow配置MaaS API使用指導(dǎo)

    RAGFlow配置MaaS API使用指導(dǎo)
    的頭像 發(fā)表于 04-19 13:40 ?255次閱讀
    RAGFlow<b class='flag-5'>中</b>配置MaaS <b class='flag-5'>API</b>使用指導(dǎo)

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品