[總結]
發表於 2014-6-7 21:00:14
|只看該作者
作為最流行的服務端語言php(php: hypertext preprocessor),在開發api方面,是很簡單且極具優勢的
這篇文章寫給不太了解php開發api介面的開發者
一、先簡單回答兩個問題
1、php 可以開發客戶端嗎?
答:正確的回答是,不適合,因為php是服務端指令碼語言,負責 b/s或c/s 架構的s部分,即:server端的開發。
(別去糾結 gtk、winbinder)
2、為什麼選擇 php 作為開發服務端的首選?
答:跨平台(可以執行在unix、linux、windows、mac os下)、低消耗(php消耗相當少的系統資源)、執行效率高(相對而言)、mysql的完美搭檔,本身是免費開源的,......
二、如何使用 php 開發 api 呢?
有興趣細研究的,可以先看看百科介紹:
百科寫的比較泛,嫌文字多?好吧,那就不看了,先了解下 api 是什麼鬼
1、api 比開發 web 更簡潔,但可能邏輯更複雜,api 只返回結果,也就是只完成資料輸出,不呈現頁面,
2、web 開發,更多的是 get 和 post 請求,api 還有 put、delete 請求
3、和 web 開發一樣,首先需要一些相關的引數,這些引數,都會由客戶端傳過來,也許是 get 也許是 post,這個需要開發團隊相互之間約定好,或者制定統一規範
4、有了引數,根據應用需求,完成資料處理,例如:獲取使用者資訊、發朋友圈、發訊息、一局遊戲結束資料提交等等
5、資料邏輯處理完之後,返回客戶端所需要用到的相關資料,例如:使用者資訊陣列、朋友圈列表、訊息狀態、遊戲結果資料等等,那資料是怎麼返給客戶端呢?常見有xml、json,設定相應的header並把要返回的資料直接列印出來即可
6、客戶端獲取到你返回的資料後,在客戶端本地和使用者進行互動
所以我們大概知道,api 其實不存在web領域的 mvc 架構模式,若要分層的,api 也只有 m 和 c 兩層,當然,後端可能會有更加複雜的架構!
通過下面乙個http協議的api例項來理解php怎麼開發api:
<?php
/*** 比較標準的介面輸出函式
* @param string $info 訊息
* @param integer $code 介面錯誤碼,很關鍵的引數
* @param array $data 附加資料
* $param string $location 重定向
* @return array
*/function var_json($info = '', $code = 10000, $data = array(), $location = '')
$a = empty($_get['a']) ? '' : $_get['a'];
$qq = empty($_get['qq']) ? 0 : intval($_get['qq']);
//假設這是資料來源,如mysql
$data = array();
$data[979136] = array('qq'=>979136, 'vip'=>5,'level'=>128, 'reg_time'=>1376523234, 'qb'=>300);
$data[979137] = array('qq'=>979137, 'vip'=>8,'level'=>101, 'reg_time'=>1377123144, 'qb'=>300);
preg_match('/^[a-za-z]+$/', $a) || var_json('非法呼叫');
isset($data[$qq]) || var_json('使用者不存在', 100001);
switch ($a)
複製**
把它部署到伺服器之後,任何語言都可以通過http協議呼叫諸如下面的url介面:
?a=info&qq=979137&ticket=test
?a=info&qq=979138&ticket=test
?a=friends&qq=979137&ticket=test
?a=****&qq=979137&ticket=test
介面輸出示例,返回的是一串json:
,json具有很強的跨平台性,幾乎每種語言都有解析json的函式,下面是乙個php作為客戶端呼叫的示例:"location": ""
}
複製**
頁面輸出結果:
array(4)實際業務中,就是拿到了介面返回的資料之後,結合自身的業務為使用者提供服務!["location"]=>string(0) ""
}
三、實際專案中,我們在開發 api 時應該注意的幾個點(僅供參考)
這裡給thinkphp 打個廣告:
目前 thinkphp5 是 thinkphp 家族的乙個顛覆性重構版本,slogan:為 api 而生。
本站
這幾天的事,留著自己看看
從昨天開始到學校教務處打雜。反正閒著也是閒著。天天在宿舍看片那還不讓做點事,畢竟現在錢是個很大問題啊!那些事實在是雜亂。不知道如果自己真的上了公務員是不是也像是那樣,如果是,那自己又能不能適應?不知道,真的不知道。除了辦公室的工作性質外,還有就是人事關係了,自己是不是能很好的處理?還是像在大學這四年...
pragma 預處理指令詳解(留著以後看看)
pragma 預處理指令詳解 在所有的預處理指令中,pragma 指令可能是最複雜的了,它的作用是設定編譯器的狀態或者是指示編譯器完成一些特定的動作。pragma指令對每個編譯器給出了乙個方法,在保持與c和c 語言完全相容的情況下,給出主機或作業系統專有的特徵。依據定義,編譯指示是機器或作業系統專有...
看看我自己
其實很早就想再來空間寫寫了,可是雜碎的心卻怎麼也靜不下來!到今天,我已經意識到了我存在的問題,不能再得過且過了,不能在自以為是了,受打擊了,該好好看看自己了,我到底是那些地方出問題了,其實我的問題很大,現在大學的生活變得雜亂無章,以前大一時是上完課就想打打球上上網,雖然在玩但還算比較充實,現在是整天...