iT邦幫忙

1

API的觀念,想請大家解惑。

api
  • 分享至 

  • xImage

將應用程式,資料跟硬體串接起來可以跟據使用著的意向回饋相對資訊並進行互動的整合系統平台就是一個API

這樣子理解是正確的嗎?API主要是著重於那裡?

原本參考到這份資料:https://www.ithome.com.tw/voice/87207

"作業系統是應用程式的基礎設施,提供了眾多的服務,就以當今典型的作業系統來說,會有檔案管理、行程管理、使用者帳戶管理、……等等。針對應用程式所共通需要的部份,以 API 的形式來提供程式設計上便利的途徑,以便取用這些服務,明顯可以簡化應用程式的開發,更何況有些動作甚至只適合在作業系統層級的權限來進行。"
"API,並非作業系統所提供,而是以程式庫、應用程式框架之類的形式存在,整理、萃取出特定領域中應用程式的共通需求而成,使得該領域中的不同應用程式,都可以透過API的實作品,來得到開發的諸多好處。"

這樣子看起來好像是著重於軟體工程概念跟架構上的區別(不好意思,我不確定這樣子講到底得不得體,還請不吝指出。);

參考到MuleSoft的這份資料:https://blog.termsoup.com/2016/11/02/what-is-api/
以及google API:https://www.mile.cloud/zh-hant/introduction-to-google-api/

這兩份是API在生活上的應用,這樣看完之後感覺上好像知道API到底是甚麼。
但是又有一個疑問:
"單單只滿足API的條件"好像並不足以能做為一個足夠的API

https://buzzorange.com/techorange/2013/03/22/5-lessons-from-api-giants-like-twitter-and-google/
這一篇講到的好像是讓一個API更為實用的方向

不好意思,這篇有的地方連我自己都不知道在說甚麼。
真的還請各位前輩指引一下,萬分抱歉。

看更多先前的討論...收起先前的討論...
weiclin iT邦高手 4 級 ‧ 2018-11-06 18:08:02 檢舉
不用想那麼複雜, UI 是使用者界面, 是讓人透過畫面操作軟體功能, API 一樣是界面, 只是他的使用對象是程式語言, 提供程式語言使用某種方式操作軟體功能, 就是 API
我都把它當作函數
yuski iT邦新手 4 級 ‧ 2018-11-06 20:45:53 檢舉
我之前鐵人賽有寫到API
https://ithelp.ithome.com.tw/articles/10194137
石頭 iT邦高手 1 級 ‧ 2018-11-06 20:51:04 檢舉
API 簡單來說就是對外的界面 我們不用知道內部如何封裝 只需要知道怎麼使用就好

問題提到的比較像是 Web API ,它可以提供對外服務 我們使用方只關注這個API可提供什麼資訊
wwx iT邦好手 1 級 ‧ 2018-11-07 10:44:26 檢舉
一開始的參考資料就寫:
作業系統同樣也提供了一組 API
問題裏又說:
API,並非作業系統所提供

簡單的比喻一下:

應用程式(給人用的)
- 有UI(使用者介面)給人操作的軟體(透過螢幕/鍵盤等或更多感測裝置與相關硬體)

應用程式介面(給程式用的)
- 有控制或溝通的方法給程式操作的工具(透過程式設計運行或呼叫)
youarefat iT邦新手 5 級 ‧ 2018-11-08 15:05:21 檢舉
API就是別人寫好的程式啊
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
㊣浩瀚星空㊣
iT邦大神 1 級 ‧ 2018-11-07 15:46:56
最佳解答

其實,並不太需要去了解太多解釋,API簡單來說。就是一種協議對外操作的一種介面。

就先用操作資料庫好了,正統來說,一般要操作資料庫是需要其帳號的密碼。
但如果提供了帳號跟密碼給非內部的人員來用這台主機。其結果可想而知。

所以,我們就需要給與一種協議跟協定。它可以是程式、物件、應用程式。
只要是協議規劃好的,都可以將其當成API。

用比較白話點的說法,API就是一種提供服務的概念。你不需要知道API做了什麼事,你只需要知道如何去使用該API在規範的範圍內,去取得你要的東西。

上面的人有解釋了。其實就是選擇1號2號。你要買幾份。等等。
API如規範好1~6號。你就是依照其協議,來選擇1號幾份。或1 2號幾份。
但你無法要求7號。因為規範這件事並不是使用者可以自訂的。
回頭來看內部。API的開發人員。就得要先確定1~6號,是否可以滿足所有要提供的服務。
如不能滿足,或是可能目前提供的服務有問題的情況下。就有可能需要更換跟替換。

snameless iT邦新手 4 級 ‧ 2018-11-08 16:49:21 檢舉

感謝各位先進不吝指教!對API有一個比較完整的理解了。

1
小魚
iT邦大師 1 級 ‧ 2018-11-06 18:49:48

API就只是要資料而已,
那些專有名詞的我都不懂,
會寫就好了.
目前API基本上都是傳JSON格式...
這是目前效率最好的格式...

1

因為想寫的東西有點………生動(我覺得啦)
所以就鮮少的開回答來用了。

在麥當當……
客人:我要一個一號餐。
店員:好的,一共是129元。
客人:這是129元。
(waiting......)
店員:這是您的一號餐,請點一下,謝謝您。

你付了錢,開心的買到了1號餐。店員就是interface的窗口。
你不需要去管這個1號餐是怎麼做出來的。你只要付錢享受就好了。

一件簡單的事,其實不需要太多太花俏或太生硬的字詞解釋。
他可能隨時就在我們生活的周遭不斷不斷的持續發生。

看更多先前的回應...收起先前的回應...
小魚 iT邦大師 1 級 ‧ 2018-11-07 00:15:12 檢舉

老闆, 我要一份狗肉特餐...

小魚 iT邦大師 1 級 ‧ 2018-11-07 00:18:32 檢舉

可樂說的意思是說,
API就是input跟output,
input就是你跟他說你要1號餐(參數),
你不用管API是怎麼寫的(除非你自己要寫),
然後就會得到output(JSON字串),
1號餐就上桌了,
你只要知道怎麼吃(處理資料)就好了,
至於食物的來源(資料怎麼出來的)你其實不必知道,
你只要相信裡面沒有塑化劑就好了...

/images/emoticon/emoticon37.gif

這舉例我可以 /images/emoticon/emoticon37.gif

0
bizpro
iT邦大師 1 級 ‧ 2018-11-07 10:50:53

您提供的資訊和大部份的回應都只著重API外顯的"功用", 因為都缺少一個內化的"功能", 首先先解釋什麼是API:
API:
英文: Application Programming Interface
中文: 應用程式程式撰寫界面

縮寫I代表英文的"interface"和中文的"界面"是API的功用.
縮寫P代表英文的"programming"和中文的"程式撰寫"才是真的功能. API是給程式撰寫(programming)用的.

從過去到現在, 每一應用程式(A, application)由不同的元件組成, 不論自己寫的或別人寫的, 不論是物件導向還是功能導向, 都有界面(I, interface), 程式設計師都依據其界面撰寫程式(P, programming), 因此API一直存在. 而隨著軟體技術的演進與複雜度的增加, 開始有了API的標準化. 目前全球性的標準是OpenAPI 3.0:

https://www.openapis.org/

透過API標準化, 軟體人員可以用標準的程式撰寫界面(API)來使用不同的元件撰寫成應用程式. 如果要比喻API, 就說國際的共通語言英語吧, 而標準化的OpenAPI 3.0 是軟體人員撰寫程式的共通語言.

API的P才是重點, 卻被省略不提. 你要寫程式, 要知道怎麼使用你想用的元件吧, 那就是API, 而是不是標準化API不是必要, 標準化API只是更好.

5
海綿寶寶
iT邦大神 1 級 ‧ 2018-11-07 11:18:13
將應用程式,資料跟硬體串接起來可以跟據使用著的意向回饋相對資訊並進行互動的整合系統平台就是一個API

這樣子理解是正確的嗎?

錯,這個描述比較接近「電腦作業系統」

你自己找到的這篇已經寫得很清楚了
不要再混淆自己的觀念了

我替你摘錄幾點這篇提到的觀念
1.API 的定義

所謂的API,就是應用程式介面(Application Programming Interface),讓開發者得以憑藉著這組介面,而更便利地開發應用程式。

2.API 的類型

1.作業系統提供的 API
提供程式設計上便利的途徑,以便取用這些服務(註:檔案管理、使用者帳戶管理、……等等)
2.特定領域的 API
特定領域可能像是繪圖、音效控制、報表產生、科學運算
3.自己開發的 API
團隊內部、或是同一個公司中其他團隊所設計的 API

3.API 的設計和實作有什麼不同的差異點

API 的使用者還是程式設計者,他們可能也是 API 的設計者,也有可能是應用程式設計者。
但應用程式的使用者通常是人類使用者
0
andy132324
iT邦新手 5 級 ‧ 2018-11-08 20:07:18

開發者堤共一個窗口讓 其他人能使用他們的技術? 不確定XD

我要發表回答

立即登入回答