簡述應(yīng)用程序接口(API)

寫下這個文章的原因是,我發(fā)現(xiàn)身邊一些的朋友可能是因為之前沒有接觸過API,以至于對API有些不解和抵觸.
因為微信開發(fā)/地圖定位/各種大數(shù)據(jù)的信息查詢,讓接口(api)成為了一個非常常用的工具.這篇文章是我自己的一些理解,由于本人也是個小白,肯定有很多地方不到位,希望能指出.首先,我們從API是什么開始說.

1.API是什么?

維基百科的解釋是:
應(yīng)用程序接口 (Application Programming Interface 簡稱:API)為:“‘電腦操作系統(tǒng)(Operating system)’或‘程序庫’提供給應(yīng)用程序調(diào)用使用的代碼”。其主要目的是讓應(yīng)用程序開發(fā)人員得以調(diào)用一組例程功能授霸,而無須考慮其底層的源代碼為何际插、或理解其內(nèi)部工作機制的細(xì)節(jié)。API本身是抽象的辛辨,它僅定義了一個接口瑟枫,而不涉及應(yīng)用程序在實際實現(xiàn)過程中的具體操作。

簡而言之接口就是一個抽象的,不需要考慮內(nèi)部細(xì)節(jié)的東西.你拿來用就可以了.這么講可能抽象了一些,我們舉個例子:
以百度地圖IP定位的API為例:
服務(wù)地址:
http://api.map.baidu.com/location/ip

接口參數(shù):

百度地圖接口參數(shù)

返回結(jié)果:

{
   address: "CN|北京|北京|None|CHINANET|1|None", #地址 
   content: #詳細(xì)內(nèi)容 
       { address: "北京市", #簡要地址 
         address_detail: #詳細(xì)地址信息 
            { city: "北京市", #城市 
            city_code: 131, #百度城市代碼 
            district: "", #區(qū)縣 
            province: "北京市", #省份 
            street: "", #街道 
            street_number: "" #門址 
            }, point: #百度經(jīng)緯度坐標(biāo)值 
            { x: "116.39564504", y: "39.92998578" 
            }
       },
     status: 0 #返回狀態(tài)碼 
}

<u>那么,服務(wù)地址/接口參數(shù)/返回結(jié)果分別是什么意思呢?</u>
我們一一來理解:
服務(wù)地址: 即我們需要數(shù)據(jù)請求的頁面地址.

請求參數(shù) 有的時候我們不只從接口上取值,我們還需要用一種特殊的方式告訴服務(wù)器,我們需要什么數(shù)據(jù),你給我們需要的就可以了,別瞎給.這種方式通常是URL傳參的形式.比如百度的這個api就可以這樣傳.
http://api.map.baidu.com/location/ip?ak=E4805d16520de693a3fe707cdc962045&ip=202.198.16.3&coor=bd09ll
通過url,我們告訴百度,我們的ak(access key)是:E48....62045,我們要定位的ip是:202.198.16.3,coor是:bd09ll(告訴百度我們需要經(jīng)緯坐標(biāo)).
這就是一中最最常用的使用API的方式.

返回結(jié)果 上面我們通過URL傳參的方式告訴了百度服務(wù)器,我們需要的是IP為202.198.16.3的位置信息,而且需要經(jīng)緯坐標(biāo)值(coor=bd09ll),并且我們的Ak值是對的,這時候,百度就會輸出一個結(jié)果在頁面里,通常是JSON字符串的形式.如:

{ 
  address: "CN|吉林|長春|None|CERNET|1|None", 
  content: { 
    address: "吉林省長春市", 
    address_detail: { 
      city: "長春市", 
      city_code: 53, 
      district: "", 
      province: "吉林省", 
      street: "", 
      street_number: "" 
    }, 
    point: { 
      x: "125.31364243", y: "43.89833761" 
    } 
  }, status: 0 
}

我們可以通過讀取url頁面的形式來獲取返回的json字符串.再應(yīng)用到我們的項目中.
上述就是一個最簡單的API使用,也是最本質(zhì)/常用的一種.(傳值和取值)


從上面的例子中,我們就可以知道,為什么API不需要考慮程序的內(nèi)部細(xì)節(jié)了吧?其實它就好像一個封裝好的電池,我們放到卡槽里用就行了,不需要去了解內(nèi)部結(jié)構(gòu).
對于大型的API內(nèi)部封裝的算法是非常復(fù)雜的.但它的原理并不難,我們自己就可以嘗試著寫上一個小小的API.這里我給個例子:

<?php
#假設(shè)存為index.php到根目錄
header ('content-type:text/html;charset=utf-8');
$con = mysql_connect("localhost","root","root");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db('chaxun',$con);
    $token=isset($_GET['token'])?$_GET['token']:"1";
if ($token==123) {
    $sql="SELECT * FROM data;";
    $result = mysql_query($sql);

    while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
    $rst[]=$row;
    }
    $rst_json = json_encode($rst);
    echo $rst_json;
}else{
    echo "token錯誤!";
}
mysql_close();
?>

上面的例子,
我們API服務(wù)地址就是:http://localhost/index.php
接口參數(shù)我們需要傳一個token=123
返回結(jié)果就是一個查詢數(shù)據(jù)庫的結(jié)果,轉(zhuǎn)換的json字符串.
完整的url拼起來就是:http://localhost/index.php?token=123
看吧,其實寫個接口就這么簡單.
好困,睡了,明天再來補完整.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末溅呢,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子驶鹉,更是在濱河造成了極大的恐慌铣墨,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件姚淆,死亡現(xiàn)場離奇詭異屡律,居然都是意外死亡,警方通過查閱死者的電腦和手機搏讶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門霍殴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人妒蔚,你說我怎么就攤上這事月弛。” “怎么了叁鉴?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵佛寿,是天一觀的道長但壮。 經(jīng)常有香客問我,道長弹渔,這世上最難降的妖魔是什么溯祸? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任舞肆,我火速辦了婚禮博杖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘哩盲。我一直安慰自己狈醉,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布抒线。 她就那樣靜靜地躺著渣慕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪旱物。 梳的紋絲不亂的頭發(fā)上卫袒,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音宝穗,去河邊找鬼码秉。 笑死,一個胖子當(dāng)著我的面吹牛转砖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播晋控,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼姓赤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蝌焚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤品腹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體产喉,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年羡鸥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惧浴。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡奕剃,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出纵朋,到底是詐尸還是另有隱情,我是刑警寧澤嘁锯,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布家乘,位于F島的核電站藏澳,受9級特大地震影響仁锯,放射性物質(zhì)發(fā)生泄漏翔悠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一腻要、第九天 我趴在偏房一處隱蔽的房頂上張望涝登。 院中可真熱鬧效诅,春花似錦趟济、人聲如沸咽笼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽施掏。三九已至,卻和暖如春七芭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背预明。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工撰糠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人窗慎。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓卤材,卻偏偏與公主長得像,于是被迫代替她去往敵國和親术吗。 傳聞我的和親對象是個殘疾皇子帆精,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理卓练,服務(wù)發(fā)現(xiàn)隘蝎,斷路器襟企,智...
    卡卡羅2017閱讀 134,600評論 18 139
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,125評論 29 470
  • 從三月份找實習(xí)到現(xiàn)在顽悼,面了一些公司几迄,掛了不少冰评,但最終還是拿到小米、百度解孙、阿里抛人、京東妆距、新浪函匕、CVTE、樂視家的研發(fā)崗...
    時芥藍(lán)閱讀 42,192評論 11 349
  • 我交淺情深的領(lǐng)導(dǎo) ———致敬尊敬的領(lǐng)導(dǎo)冷運杰董事長 “你們?nèi)A潯的董事長姓冷中剩,冷娟你也姓冷抒寂,你們是什么關(guān)系?...
    雪千潯閱讀 855評論 0 0
  • ----git官方文檔筆記 什么是版本控制郊愧? 版本控制是一種記錄一個或若干文件內(nèi)容變化井佑,以便將來查閱特定版本修訂情...
    云蕭飛宇閱讀 151評論 0 1