成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

API 與 SDK:有什么區別?

開發 前端
通常,OCR 應用的后端服務都會部署在云上,那么我們應該如何在移動應用程序與基于云的服務之間進行通信呢?這就是 API 和 SDK 的用武之地了。

前言

  • 什么是 API?
  • 什么是 SDK?

兩者之間有何關系?

歡迎來到本次的每周一問系列。

既然點進來了,相信你或多或少都聽說過這兩個名詞了,因此,在為你解答之前,讓我們先從一個例子出發。 假如你想開發一個 OCR 應用(通俗的說就是文字識別應用),他的功能是識別用戶上傳的一張圖片,然后將圖片中的文字識別出來返回給用戶。如下圖所示:

 

API 與 SDK:有什么區別?

通常,OCR 應用的后端服務都會部署在云上,那么我們應該如何在移動應用程序與基于云的服務之間進行通信呢?

這就是 API 和 SDK 的用武之地了。

  • API
  • API 的特點
  • 通信

首先我們要明白的是 API 是和通信有關的,是用于應用(服務)與其他應用(服務)對話所定義的協議。在上述例子中,你可以簡單理解為 API 是 OCR 應用和云端服務之間溝通的橋梁。

那么 API 到底是什么?

API 全稱 Application Programming Interface,即「應用程序接口」。

一般是指一些預先定義的函數,目的是供應用程序與開發人員基于某軟件或硬件得以訪問一組程序的能力,而又無需訪問源碼,或理解內部工作機制的細節。

以 Java 為例,當你想要實現一個數組排序的功能時,你是會先手寫一個排序算法,還是直接使用Arrays.sort()函數?我想你心里是有答案的。

抽象

其次,我們要理解,API 的另一個重要特點——抽象。

抽象指的又是什么?

還是以這個 OCR 應用為例,當我們在使用云端提供的文字識別能力時(比如百度文字識別),他的背后可能會有成千上萬的代碼,比如提供識別能力的機器學習的代碼、提供 Web 能力的后端代碼等等。

 

API 與 SDK:有什么區別?

但是你作為一個 APP 的開發者,你需要去看這些代碼是怎么寫的嗎?難道不知道背后的源碼就不能調用百度提供的文字識別能力了嗎?當然不是。

通常服務商已經給你提供了文檔,告訴你如何去調用相應服務,只要你按照他的要求來即可。

 

API 與 SDK:有什么區別?

因此,在你的 APP 和 OCR 服務之間,API 抽象出所有復雜的邏輯,簡化了調用過程,這使得你只需要考慮獲取所需的數據即可。

標準化

API 是標準化的,這意味著存在有關如何定義 API 的行業標準,比如 SOAP、REST、GraphQL 等。

我在《你的第一本 SpringBoot 書》[1]中寫到什么是 RESTful API,有興趣的小伙伴可以點擊閱讀,這是我正在寫的一本 SpringBoot 入門教程,目前還沒完工,歡迎讀者們不要吝嗇自己的建議 。

API 的構成要素

那么,API 通常由什么組成呢?

首先,我們要發送一些數據到云端,即所謂的「請求」。

從本地應用發請求到云端,我們需要分幾步完成,以 REST 為例。

對于 REST API 調用請求,第一步是指定傳輸的方法,通常是和 HTTP 方法對應的,如下圖所示:

 

API 與 SDK:有什么區別?

當你想要上傳一張圖片時,通常會使用 POST 方法,然后是傳遞一些參數,包括請求的內容(圖像本身)。然后加上需要請求的地址,即可構成一個完整的請求。如下圖所示:

 

API 與 SDK:有什么區別?

之后,服務器再以 JSON 等形式將數據返還給你,在你使用的云服務的文檔中也會有所標注。

 

API 與 SDK:有什么區別?

SDK

說了這么多,你應該對 API 有所了解了,那么這時候問題就來了,作為開發人員,你如何在實際的項目中調用 API?

你要自己構造 HTTP 請求、拼接 URL、添加需要的參數、處理返回的 JSON 對象,麻煩嗎?

麻煩。

 

[[359310]]

那有沒有什么好的辦法簡化這些操作,使得我只需要給一張圖片然后就給我返回結果的呢?

自然是有的,這就是接下來我們要說的 SDK 了。

SDK 全稱 Software Development Kit,軟件開發工具包。

一般都是一些軟件工程師為特定的軟件包、軟件框架、硬件平臺、操作系統等建立應用軟件時的開發工具的集合。

通俗來講就是第三方服務商提供的實現產品軟件某項功能的工具包。例如 JDK 就是一種 SDK。

還是以上面的 OCR 應用為例,如果使用了某廠商的 SDK 服務,那么我們連 HTTP 請求的構建都不需要了,僅調用一個方法,可能的代碼如下圖所示。

  1. OCRResult res = ocrClient.ocr("pic.jpg").getResult(); 

通過調用這行代碼,SDK 會自動封裝 API 請求,而且作為響應,你獲得的結果也不一定是 JSON 對象,也有可能是代碼,例如上述代碼段里的OCRResult,這是因為 SDK 也已經將 JSON 對象反序列化成你需要的對象,比如一個 Java Model。

SDK 相當于開發集成工具環境,API 就是數據接口。API 可以在 SDK 提供的“環境”里請求。同樣的,這里的“環境”也是一個抽象的概念。如果不使用 SDK,也可以直接調用 API,只不過,這個環境就要由開發者自己實現了。

區別

其實從上面的內容,我們也已了解到,API 在更多場合下更像是 SDK 的一個子集,他們的區別如下:

  • API 通常是一個函數,有特定的功能;而 SDK 是一個很多功能函數的集合體,更像是一個工具包。•API 通常扮演數據接口的形象,SDK 相當于一個工具環境,通常是需要在 SDK 的環境下調用 APl。•SDK 相較于 API 封裝層次更高。

以上就是本篇文章的全部內容了,如果你覺得文章對你有所幫助,隨手點個關注轉發給你的小伙伴們,這對我真的很重要,你們的支持是我繼續更文的動力,謝謝大家!

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2021-01-13 09:27:31

微服務API分布式

2018-07-13 17:05:22

SQLMySQL數據庫

2023-10-13 15:48:17

OT系統

2011-08-08 14:09:55

dhcpbootp

2019-02-27 15:22:15

混合云云計算多云

2021-05-16 15:28:59

沙箱容器惡意軟件

2020-09-06 09:51:57

SNMP TrapSyslog網絡協議

2014-11-26 17:42:00

亞馬遜互聯網阿里巴巴

2020-07-13 23:39:16

物聯網IoT萬物互聯

2023-06-27 14:49:34

數據中心IT 設備

2023-02-01 08:11:40

系統調用函數

2024-06-24 21:24:12

云計算云網絡

2022-09-14 09:45:15

指標標簽

2012-07-25 15:45:28

ERPSCM

2022-11-22 10:21:23

5GLTE

2024-02-21 14:37:56

2024-04-26 00:07:27

SDKAPI工具

2019-10-28 11:47:15

Docker虛擬機操作系統

2019-11-21 17:44:19

物聯網自動駕駛虛擬助理

2021-01-26 11:57:46

數據挖掘數據分析大數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 人人艹人人爽 | 国产精品日韩欧美一区二区 | cao在线 | 久久久xxx| 久久精品亚洲精品国产欧美 | 亚洲国产欧美精品 | 日韩一级黄色毛片 | 久久999| 午夜男人免费视频 | 玖玖在线免费视频 | 国产精品美女久久久久久免费 | 久久久久香蕉视频 | av黄色在线观看 | 国产xxxx岁13xxxxhd | 国产xxxx搡xxxxx搡麻豆 | 中文字幕亚洲一区 | 在线观看成人 | 日本福利在线观看 | av中文在线观看 | 久久99精品久久久久 | 久久亚洲精品视频 | 色综合天天天天做夜夜夜夜做 | 黄视频免费观看 | 国产一区| 亚洲a在线观看 | 日韩欧美国产精品一区二区 | 欧美日韩在线一区 | 日韩伦理一区二区 | 亚洲午夜精品在线观看 | 久久久综合精品 | 暴草美女 | 国产夜恋视频在线观看 | 久久久无码精品亚洲日韩按摩 | 国产成人福利视频在线观看 | 国产在线观看一区二区三区 | 男人阁久久 | 97国产一区二区精品久久呦 | 成人精品国产免费网站 | 91精品久久久久久久久久 | 日韩欧美一区二区三区免费观看 | 欧美在线视频免费 |