回覆列表
  • 1 # 愛碼農

    說到API,往往是和SDK放在一起的。

    什麼叫API,看一下餐廳裡怎麼點餐的就行了。

    到了飯店,喊一場服務員,點餐。

    服務員拿出來選單給你看,你點什麼,她在小本本上記什麼。

    點好了之後,再把選單送到後廚去。

    這裡服務員就是提供服務的(不然也不叫服務員),提供什麼服務呢?

    點餐服務。

    點餐服務需要什麼呢?

    談一個服務,通常就是要談輸入是什麼,輸出又是什麼。

    從眼下這個例子來看,輸入就是一道道菜品的名字(或者是ID,不知道你們見過菜品上面有編號,服務員只記編號的?),輸出的結果就是端過來的一道道菜。

    有了輸入和輸出,服務員就可以提供了點餐的功能,這就是API,顧客就是呼叫者,服務員就是服務的提供者。

    你可以在這裡把服務員替換成貓貓,假設女王大人貓貓來給你提供服務,只要輸出是菜品的名字,輸出是菜品,這個API就是能夠正常使用的。

    而且,所有的顧客都可以用這種方式來點菜的~~~

    再想想,是不是有的服務員手裡拿的是點餐機?想想一個漂亮的小姑娘,拿著一個和手機大小差不多的點餐機,這個點餐機,就是需要和後廚系統有互動,這種互動,就需要一種約束,來宣告點菜功能的輸入是什麼,輸出是什麼。比如說,如果使用者點了一道已經估清的菜,是不是服務員要告訴顧客一下?

    API通常是以Http的形式提供,它隱藏的含義就是,只要你符合我定義的標準,你就可以來使用我。

    比如說,服務員是中國姑娘,顧客是美華人,沒關係,只要美華人能說中國話,這套API就可以使用。如果美華人只會說英語,怎麼辦?讓和美華人一起來吃飯的中國朋友翻譯成中文,就可以了~~

    那麼什麼是SDK呢?

    當美華人不會說中文的時候,飯店裡的大堂經理來了,他來給美國佬當翻譯。這就是SDK,SDK一般都是和語言相關,是官方提供的各種不同語言的實現版本。

    同樣的,我們再把思維模式擴大一點。

    除了Http這種API,內部系統整合的元件,是否也是有API?

    你會發現,確實是這樣的,比如說,JDK本身提供的各種API,在這裡,API和SDK的概念沒有那麼清楚了,但是API本身的含義就是,當服務的提供方對外提供服務的時候,應該宣告輸入和輸出和功能的明確含義。

    而一組組明確聲明瞭的輸入,輸出和功能描述,就是服務方提供的各種API。

    比如說陣列對外暴露的方法,連結串列對外暴露的方法等等。

    那麼,API和方法之間有沒有明顯的區別呢?暴露出去的,可被公開使用的方法,統稱為API~~~

    以上解釋不夠嚴謹,但是對於初學者來說,理解起來應該夠了。

    如果你在理解API的時候有困難,大概問題並不是在API上,而是你有沒有理解清楚什麼叫做封裝,什麼叫做服務?

  • 中秋節和大豐收的關聯?
  • 男友說以後不會結婚,談戀愛只看現在,但是對我特別好,我還要繼續跟他在一起嗎?