<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是API,不同場景中的API

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

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

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

大多數現代應用程序(如Excel)都是一堆API組成的

有時,公司會公開他們的部分API,比如Twitter或谷歌地圖

API是軟件中比較令人困惑的概念之一,因為它們可以代表很多不同的東西

API為大多數現代軟件開發提供了強大的功能,且是可以聰明地討論代碼的關鍵部分。

什么是API(理論上)?

如果你想理解API,需要進行一個重要的區分:一個是API的技術定義,然后是人們在對話中如何實際使用這個概念。它們非常不同,這就是為什么這些東西會讓人很困惑。讓我們先來解決技術定義。

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

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

如果向谷歌地圖API提供一個地址作為輸入,它的輸出是該地址的經緯度坐標

如果給Javascript Array.Sort API一個數組作為輸入,它將這些數字作為輸出進行排序

如果你給Lyft Driver API一個起始地址和結束地址作為輸入,它會找到最匹配的司機作為輸出

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

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

你可以點擊星形圖標來標記一封郵件:在后端,這將觸發一個“標記郵件”的API

前端的大多數交互都被轉換成后端的API調用,這就是應用軟件101。一旦我開始理解這個模型,就更容易理解開發者如何在對話中實際使用“API”的方式了。

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

什么是API(實際上)?

實際上,我發現人們在三種不同的場景中使用“API”,它們都代表著不同的東西。但從理論上講,它們都是一樣的,符合我們之前的定義。它們都是一樣的,但又有所不同。

公司內部API

當公司構建他們的應用時,他們把它們設計成一組交互的API。最容易理解的例子是Lyft(或者Uber)。你可能想在Lyft應用中做一些事情,它們在幕后都會觸發不同的API。

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

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

公共API

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

通常,你使用Twitter應用,它會對Twitter內部API進行一些API調用,比如顯示提要、發送回復和搜索(這就是我們剛剛談到的:前端和后端)。但你也可以在Twitter應用之外通過代碼調用這些API。例如,有一個抓取用戶時間軸的API,你可以使用它來查看用戶的時間軸(他們的推文),該API以JSON格式返回那些推文,這是一種特殊的文本格式。

這些公共API讓人們在Twitter上構建應用。有一些非?;镜臇|西,比如筆者做的這個學校項目,收集關于紐約大學的推文,分析他們的情緒,但也有一些相當高級的東西,比如Flock,它可以讓你搜索你的訂閱者。

代碼接口

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

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

因此,當人們談論API時,我們并不總是清楚人們到底在談論什么,特別是因為開發者用這個詞指代很多不同的東西。如果你感到困惑,就直接問。答案很可能屬于這三類。

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

編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • API
    API
    +關注

    關注

    2

    文章

    1398

    瀏覽量

    61034

原文標題:API到底指的是什么?

文章出處:【微信號:Astroys,微信公眾號:Astroys】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    API技巧集(二)

    (一)不規則窗口 Windows提供的只是標準的矩形窗口,要想建立一個不規則的窗口就需要調用API函數來實現。建立一個不規則的窗口,一般是先用創建區域的API函數建立一個不規則的區域,再用API函數
    的頭像 發表于 05-22 16:49 ?705次閱讀

    API】多pk分組&用戶場景&通用定時任務api已經發布

    多PK分組、用戶場景和通用定時任務接口已經發布。以上OPEN API 用戶/廠商 可免費使用。多PK分組:可讓用戶/廠商對不用產品的設備進行歸類管理。接口兼容原有的單PK分組,不同點在于創建多 pk
    發表于 08-31 13:08

    阿里云啟動API創新大賽 設視頻技術為場景賽題

    直播行業已經從去年的瘋狂燒錢、搶主播奪用戶等狀態走出來,朝著內容垂直化、平臺商業化等方向去進行探索。同時,直播+也如火如荼的發展起來,其中以直播+活動、直播+教育等幾大場景最為典型,而在活動、教育直播
    發表于 01-09 16:42

    SDK、API、Open API有什么區別(iot開發平臺)

    ,提高組成單元的內聚性,降低組成單元間的耦合程度,從而提高系統的維護性和擴展性。API是接口的一種,在程序交互具有重要的作用,而SDK與API有著密不可分的關系。[ SDK的概念]SDK即“軟體
    發表于 07-09 15:32

    SDK、API、Open API有什么區別(iot開發平臺)

    ,提高組成單元的內聚性,降低組成單元間的耦合程度,從而提高系統的維護性和擴展性。API是接口的一種,在程序交互具有重要的作用,而SDK與API有著密不可分的關系。[ SDK的概念]SDK即“軟體
    發表于 07-09 19:17

    OpenHarmony 應用開發SDK、API 與基礎工具

    。C API 也包含在鴻蒙SDK ,方便開發者使用 C 或者 C++語言實現應用相應功能。 C API 只覆蓋了部分鴻蒙基礎底層能力,如 libc,圖形庫,窗口系統,多媒體,壓縮庫等,并沒有完全提供
    發表于 09-19 15:45

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

    Windows API大全,本書主要介紹VC++里API函數及其用法-WindowsAPI Daquan, the book introduces VC Lane API function
    發表于 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
    發表于 10-14 17:42 ?6次下載

    什么是3D API

    什么是3D API              API是Application Programming Interface的縮寫,是應用程序接口的意思,而3D
    發表于 12-25 10:52 ?552次閱讀

    分析API都有哪些特點

    好的API是怎樣的,應該具備哪些特點,作者對此進行了詳細說明,并把API比作產品,主張編寫API時從用戶的角度換位思考。 如果用戶通過他們自己的代碼與你的代碼進行交互,那么你將需要構建一個AP
    發表于 09-28 17:38 ?11次下載

    API+DevOps:華為云API Arts一體化平臺,端到端呵護您的API

    API+ | 以API-First理論為基礎,以API為核心構建數字化生態 摘要:華為云API Arts是API全生命周期一體化協作平臺,支
    的頭像 發表于 02-17 19:05 ?922次閱讀

    API+DevOps:華為云API Arts一體化平臺,端到端呵護您的API

    華為云API Arts是API全生命周期一體化協作平臺,支持開發者一站式高效實現API設計、API開發、API測試、
    的頭像 發表于 03-01 15:45 ?552次閱讀
    <b class='flag-5'>API</b>+DevOps:華為云<b class='flag-5'>API</b> Arts一體化平臺,端到端呵護您的<b class='flag-5'>API</b>

    文內福利 | 三重好禮,邀你成為API Explorer體驗官!

    華為云API Explorer為開發者提供一站式API解決方案統一平臺,集成華為云服務所有開放API, API Explorer服務,包括API
    的頭像 發表于 03-25 07:55 ?325次閱讀

    企業怎么選擇API網關

    ? 一、API網關的用處 API網關我的分析中會用到以下三種場景。 1、Open API 企業需要將自身數據、能力等作為開發平臺向外開放,通常會以rest的方式向外提供。最好的例子就是
    的頭像 發表于 05-23 11:05 ?408次閱讀
    企業怎么選擇<b class='flag-5'>API</b>網關

    api接口怎么使用

    本文就從API接口的維度,淺析API的概念以及為什么要了解它 一、API的概念 API,官方定義為應用程序編程接口。就是把是一些預先定義的接口,用來提供應用程序與開發人員基于某軟件或硬
    的頭像 發表于 05-24 14:44 ?1045次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>