hualinux 編程概念 3.10:什麼是API接口(新手必看!)

目錄

一、前言

二、什麼是接口?

2.1 什麼是API

2.2 REST、RESTful、RESTful API

2.1.1 rest

2.1.2 RESTful

2.1.3 RESTful API

2.3 web API好處


前一章節講什麼是前後端,以及前後端是通過API交互的,但沒有具體解釋什麼是API,這章節進行簡單的解說。

一、前言

我們經常聽到開發一句話“你給我一個接口讓我調用一下唄”,老闆問能不能用自己的程序獲取一些數據,開發往往也說"可以呀,讓對方給一個接口和權限,讓我們調用就行了"

那這裏的接口到底指的是什麼呢?

二、什麼是接口?

2.1 什麼是API

上面開發所說的接口並不是我們編程的接口Interface,這裏的接口我們往往把它叫做API(Application Programming Interface,應用程序編程接口)

 

接口一般分2大類:

1. 非web的應用程序方面,一般是系統方面或CS模式的應用,叫一般叫系統API。你加入相關別人指定的“文件”,往往是鏈接庫或SDK,你就可以使用這個庫所提供的類、函數或方法去“操作”對方

2. web方面的,叫web  API。一般就給我一個URL和一串授權的數字(我們給它起個名字叫token,令牌),你有了這個URL和一串授權數字,你就可以按別人公司的API文檔使用別人指定的方法及參數之類了。

例子:dnspod API就是一個例子,地址爲:https://www.dnspod.cn/docs/index.html

它就是使用POST應用對dnspod的頁面操作的,返回的是json格式的數據。它可以使用linux的curl命令,-X POST指定是POST方式提交。爲什麼要使用 POST,因爲它有授權的tonken令牌,不能明碼,被你看到,不安全呀。

說了一大堆,簡單來說API就是別人給你一個“文件”或要帶上“授權字符串”URL地址,這樣你就可以實現對其系統進行操作。

因爲我們是電商運維,主要是網站,所以我們更多關注的是web API,上面的web API還沒有說明清楚的話。

web api簡單理解就是:對網站操作進行封裝以url的形式供別人調用,並返回可網絡傳輸的通用格式數據。

1.這個URL一般是有一定格式的,不同公司有不同的格式,一般api會有使用說明文檔,教你如何使用。如阿里雲api、dnspod api、微信小程序api

2. 請求這個URL往往需要在頭部發授權驗證碼的,一般是使用token驗證。

3.api返回的一般是通用格式可在網絡中傳輸數據(json或xml)

  一般選擇json,xml比較舊現在已經很少人在使用了。一般不會直接返回HTML因爲HTML已經是可以直接呈現了。

一般請求是通過網絡傳輸的,所以要求能在網絡中傳輸;通用才能被絕大部分程序解析,這樣就與編程語言無關,就可以轉化爲自己所使用語言的數據類型進行存儲。

粗暴的理解就是:如果一個URL返回的不是HTML,而是機器能直接解析的數據,這個URL就可以看成是一個Web API

注:

Web API顧名思義,是一個可以使用HTTP協議訪問的API。

這是一個概念,而不是技術。我們可以使用不同的技術來構建Web API,如Java、.net等。

Web API一般基於HTTP/REST來實現,什麼都不需要定義,參數(輸入的數據)可以是JSON, XML或者簡單文本,響應(輸出數據)一般是JSON或XML。它不提供服務調用標準和服務發現標準。可以按你服務的特點來寫一些簡單的使用說明給使用者。 主要是把web api一般理解成http/REST來實現就行了。

 

2.2 REST、RESTful、RESTful API

上面講到REST隨便提一下REST、RESTful、RESTful API三種概念

2.1.1 rest

REST(Representational State Transfer) 並不是一種具體的實現技術,而是一種軟件架構風格,主要有以下特點:

  • 從資源的角度來考察整個網絡,每個資源有唯一標識
  • 使用通用的連接器接口操作資源
  • 對資源的操作不會改變資源標識
  • 連接協議具有無狀態性
  • 能夠使用 Cache 機制來增進性能

REST 風格幾乎是爲 HTTP 協議量身定做的,在 HTTP 協議中用 URI 來標識唯一的資源,用 GETPUTPOSTDELETE 等動詞來操作資源,HTTP 協議是無狀態協議,可以通過 Cache 來提高性能。

2.1.2 RESTful

REST 指的是一組架構約束條件和原則。滿足這些約束條件和原則的應用程序或設計就是 RESTful

有興趣的可以瞭解一下阮一峯的《理解RESTful架構

1.爲什麼會出現restful

在Restful之前的操作:
http://127.0.0.1/user/query/1   GET 根據用戶id查詢用戶數據
http://127.0.0.1/user/save      POST 新增用戶
http://127.0.0.1/user/update    POST 修改用戶信息
http://127.0.0.1/user/delete    GET/POST 刪除用戶信息


RESTful用法:
http://127.0.0.1/user/1     GET 根據用戶id查詢用戶數據
http://127.0.0.1/user      POST 新增用戶
http://127.0.0.1/user      PUT 修改用戶信息
http://127.0.0.1/user      DELETE 刪除用戶信息

之前的操作是沒有問題的,大神認爲是有問題的,有什麼問題呢?你每次請求的接口或者地址,都在做描述,例如查詢的時候用了query,新增的時候用了save,其實完全沒有這個必要,我使用了get請求,就是查詢.使用post請求,就是新增的請求,我的意圖很明顯,完全沒有必要做描述,這就是爲什麼有了restful.

2. 使用

HTTP 請求在 RESTful Web 服務中的典型應用

資源

GET

PUT

POST

DELETE

一組資源的 URI,比如 

http://www.example.com/resources/

列出 URI 及該資源組中每個資源的詳細信息

使用一組給定的資源替換當前整組資源

在本組資源中創建 / 追加一個新資源

刪除整組資源

單個資源的 URI,比如

 http://www.example.com/resources/1

獲取給定資源的詳細信息

替換 / 創建指定的資源,並將其追加到相應的資源組

把指定的資源作爲資源組,並在其下創建 / 追加一個新元素,使其隸屬於當前資源

刪除指定元素

2.1.3 RESTful API

符合REST架構設計的API

RESTful API 是一套互聯網應用程序的 API 設計理論。

RESTful API 的返回結果應該符合以下規範

  • GET /collection:返回資源對象的列表(數組)
  • GET /collection/resource:返回單個資源對象
  • POST /collection:返回新生成的資源對象
  • PUT /collection/resource:返回完整的資源對象
  • PATCH /collection/resource:返回完整的資源對象
  • DELETE /collection/resource:返回一個空文檔

有興趣的可以瞭解一下阮一峯的《RESTful API 設計指南》《RESTful API 最佳實踐

 

2.3 web API好處

編寫API有什麼好處呢?由於API就是把Web App的功能全部封裝了,所以,通過API操作數據,可以極大地把前端和後端的代碼隔離,使得後端代碼易於測試,前端代碼編寫更簡單。

此外,如果我們把前端頁面看作是一種用於展示的客戶端,那麼API就是爲客戶端提供數據、操作數據的接口。這種設計可以獲得極高的擴展性。例如,當用戶需要在手機上購買商品時,只需要開發針對iOS和Android的兩個客戶端,通過客戶端訪問API,就可以完成通過瀏覽器頁面提供的功能,而後端代碼基本無需改動。
 

當一個Web應用以API的形式對外提供功能時,整個應用的結構就擴展爲:

值得注意的是 RESTful API是一個設計理論,並不是一個框架,是你按這種理論去設計。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章