如何搭建API程序
1、基于互聯網的應用正變得越來越普及,在這個過程中,有更多的站點將自身的資源開放給開發者來調用。對外提供的API 調用使得站點之間的內容關聯性更強,同時這些開放的平臺也為用戶、開發者和中小網站帶來了更大的價值。
開放是目前的發展趨勢,越來越多的產品走向開放。目前的網站不能靠限制用戶離開來留住用戶,開放的架構反而更增加了用戶的粘性。在Web 2.0的浪潮到來之前,開放的API 甚至源代碼主要體現在桌面應用上,而現在越來越多的Web應用面向開發者開放了API。
具備分享、標準、去中心化、開放、模塊化的Web 2.0站點,在為使用者帶來價值的同時,更希望通過開放的API 來讓站點提供的服務擁有更大的用戶群和服務訪問數量。
站點在推出基于開放API 標準的產品和服務后,無需花費力氣做大量的市場推廣,只要提供的服務或應用出色易用,其他站點就會主動將開放API 提供的服務整合到自己的應用之中。同時,這種整合API 帶來的服務應用,也會激發更多富有創意的應用產生。
為了對外提供統一的API 接口,需要對開發者開放資源調用API 的站點提供開放統一的API接口環境,來幫助使用者訪問站點的功能和資源。
當然,開放API 的站點為第三方的開發者提供良好的社區支持也是很有意義的,這有助于吸引更多的技術人員參與到開放的開發平臺中,并開發出更為有趣的第三方應用。
視頻云技術提供商CC視頻開放API接口,用戶可以在自己的網站后臺輕松完成視頻的上傳、視頻播放控制操作,并可批量獲取視頻及平臺信息。
2、先做好一個備案域名,最好正規的備案公司備案。
3、選擇一家服務器租用,最好用阿里云、中網等牌子稍大的服務器
4、系統程序構建與架設,搭建在獨立的服務器上,保證服務質量。
5、鋒銳程序:
1、人性化界面,科學嚴謹,簡潔易用的操作流程和管理界面。
2、智能通道接入
程序整合了市面上幾十種常用的收費方式,輸入自己的ID和密鑰就可以開通,不懂技術也可以輕松搞定。
3、優勢全方位通道
公司和全國多家sp、卡類、網銀類等多種支付方式的優秀公司保持良好的合作關系,可以拿到市面上的幾乎所有支付渠道并可以給客戶 爭取最高的價格優勢。
4、超強安全性
設置商戶密鑰,支付信息加密傳遞,加強支付安全性,加密系統與其他支付平臺兼容性優秀。
5、完善的后臺管理
通過后臺管理系統,方便查詢定單管理、定單統計、財務管理、用戶資料修改、商戶密鑰設置、推薦用戶及用戶支付金額、商戶所得金 自定義訂單號、支付日期、結帳信息等功能。
6、優秀的負載能力
系統實現非常優秀的負載能力。還支持無限服務器擴展,一旦業務發展,只需增加投放服務器即可完成系統投放能力擴展。
其程序功能強大,實用性強,支持任何網站接口程序,api接口程序
框架api接口規范
一、入參規范:
1.分頁相關參數約定:
2.需要返回的數據格式:
通過參數data_type 獲取特定的響應數據格式,可以是json(默認)、xml、jsonp、或js。
3.接口校驗:
所有接口都帶參數token(32位),初期可以先兩邊寫死進行校驗。
4.jsonp:
當需要返回jsonp時,向接口傳入參數名為cback,即http請求中帶參數cback=回調函數,注意回調函數中不允許有特殊字符,即需要過濾特殊字符,只允許為純字母格式或下劃線組成的格式,且最大長度不能超過20。
注意:當data_type為jsonp且不傳cback的值時,系統默認會返回一個回調函數,函數名為def_func。
范例url:
http://mycatkin.com/auth/login/data_type/jsonp/p/1/ps/10/cback/myfunc/token/DJAQ21J574DKLJJ324JIQ9OKJSLDJVN21.json
#e#
二、出參規范:
1.查詢:
返回參數統一按如下接口形式,其中cnt為ad在數據庫中的總數目,如下面數據,ad下的list總數為2,area下的list總數為3。當接口有錯誤返回時,code大于1,且msg中含有錯誤信息,當無錯誤時,code為1,且msg為空。
當接口傳入當前頁參數p ,當前頁數據條數ps時,接口返回時,同樣也會反給客戶端p與ps參數。
如果有極端情況,即同一接口返回多個list,則接口分頁入參定義為“p+下劃線+當前list的下標”,如下接口,ad下的list中,當前頁的輸入參數為p_ad,ad的每頁條數輸入參數為ps_ad,即post或get中分頁參數為p_ad=1&ps_ad=20&p_area=1&ps_area=20
cnt不是當前list返回的條數,而是數據庫中,該list的總條數,用于分頁。
json格式示例:
{
“code”:1,
“msg”:“”,
“ad”:{
“cnt”:22,
“p”:2,
“ps”:20,
“list”:[{
“adv_title”:“\u8fd9\u662f\u5e7f\u544a\u6807\u98981”,
“adv_link”:“m.xxxxxx.cn\/advert\/tbsync\/”,
“open_target”:“2”,
“img_url”:“www.xxxxxx.cn\\\/data\\\/upload\\\/shop\\\/adv\\\/04825861373036910.png”
},
{
“adv_title”:“\u8fd9\u662f\u5e7f\u544a\u6807\u98982”,
“adv_link”:“m.xxxxxx.cn\\\/advert\\\/newerDerate\\\/?430”,
“open_target”:“2”,
“img_url”:“www.xxxxxx.cn\\\/data\\\/upload\\\/shop\\\/adv\\\/04782825931526321.png”
}
]
},
“area”:{
“cnt”:3,
“p”:1,
“ps”:20,
“list”:[{
“c_area_id”:“16”,“c_area_name”:“\u6df1\u5733”,
“c_area_pic”:“04732773115385188.jpg”,
“english_name”:“shenzhen”,“goodsCount”:“21”,
“img_url”:“www.xxxxxx.cn\\\/data\\\/upload\\\/shop\\\/adv\\\/04825861373036910.png”
},
{
“c_area_id”:“18”,
“c_area_name”:“\u6e56\u5357”,
“c_area_pic”:“04732773115385188.jpg”,
“english_name”:“hunan”,
“goodsCount”:“33”,
“img_url”:“www.xxxxxx.cn\/data\/upload\/shop\/adv\/04825861373036910.png”
},
{
“c_area_id”:“2”,
“c_area_name”:“\u5317\u4eac”,
“c_area_pic”:“04732773115385188.jpg”,
“english_name”:“beijing”,“goodsCount”:“70”,
“img_url”:“www.xxxxxx.cn\/data\/upload\/shop\/adv\/04825861373036910.png”
}
]
},
“goods_info”:{
“cnt”:1,
“p”:1,
“ps”:20,
“list”:[{
“goods_id”:“211”,
“goods_name”:“\u5927\u4fdd\u5065\u5305\u591c”,
“goods_price”:“1000.00”,
“main_image”:“www.xxxxxx.cn\/data\/upload\/shop\/adv\/04825861373036910.png”
}]
}
}
以php為示例,其中php中數組拼接格式為:
$array_data = array(
“code” =》 1,
“msg” =》 ‘’,
“ad” =》 array(
“cnt” =》 22,
“p” =》 2,
“ps” =》 20,
“list” =》 array(
0 =》 array(
“adv_title” =》 “這是廣告標題1”,
“adv_link” =》 “m.xxxxxx.cn/advert/tbsync/”,
“open_target” =》 “2”,
“img_url” =》 “www.xxxxxx.cn\/data\/upload\/shop\/adv\/04825861373036910.png”
),
1 =》 array(
“adv_title” =》 “這是廣告標題2”,
“adv_link” =》 “m.xxxxxx.cn\/advert\/newerDerate\/?430”,
“open_target” =》 “2”,
“img_url” =》 “www.xxxxxx.cn\/data\/upload\/shop\/adv\/04782825931526321.png”
)
)
),
“area” =》 array(
“cnt” =》 3,
“p” =》 1,
“ps” =》 20,
“list” =》 array(
0 =》 array(
“c_area_id” =》 “16”,
“c_area_name” =》 “深圳”,
“c_area_pic” =》 “04732773115385188.jpg”,
“english_name” =》 “shenzhen”,
“goodsCount” =》 “21”,
“img_url” =》 “www.xxxxxx.cn\/data\/upload\/shop\/adv\/04825861373036910.png”
),
1 =》 array(
“c_area_id” =》 “18”,
“c_area_name” =》 “湖南”,
“c_area_pic” =》 “04732773115385188.jpg”,
“english_name” =》 “hunan”,
“goodsCount” =》 “33”,
“img_url” =》 “www.xxxxxx.cn/data/upload/shop/adv/04825861373036910.png”
),
2 =》 array(
“c_area_id” =》 “2”,
“c_area_name” =》 “北京”,
“c_area_pic” =》 “04732773115385188.jpg”,
“english_name” =》 “beijing”,
“goodsCount” =》 “70”,
“img_url” =》 “www.xxxxxx.cn/data/upload/shop/adv/04825861373036910.png”
),
)
),
“goods_info” =》 array(
“cnt” =》 1,
“p” =》 1,
“ps” =》 20,
“list” =》 array(
0 =》 array(
“goods_id” =》 “211”,
“goods_name” =》 “大保健包夜”,
“goods_price” =》 “1000.00”,
“main_image” =》 “www.xxxxxx.cn/data/upload/shop/adv/04825861373036910.png”
)
)
)
);
接口盡量按一個頁面一個接口,但是公用的一些接口信息,如地區分類信息等,做單獨接口處理,但是結果參數規范,按照上面數據格式返回數據。
返回的xml數據格式,如下:
《?xml version=“1.0” encoding=“utf-8”?》
《data》
《code》1《/code》
《msg/》
《ad》
《cnt》22《/cnt》
《p》2《/p》
《ps》20《/ps》
《list》
《article》
《advtitle》這是廣告標題1《/advtitle》
《advlink》m.xxxxxx.cn/advert/tbsync/《/advlink》
《opentarget》2《/opentarget》
《imgurl》www.xxxxxx.cn\/data\/upload\/shop\/adv\/04825861373036910.png《/imgurl》
《/article》
《article》
《advtitle》這是廣告標題2《/advtitle》
《advlink》m.xxxxxx.cn\/advert\/newerDerate\/?430《/advlink》
《opentarget》2《/opentarget》
《imgurl》www.xxxxxx.cn\/data\/upload\/shop\/adv\/04782825931526321.png《/imgurl》
《/article》
《/list》
《/ad》
《area》
《cnt》3《/cnt》
《p》1《/p》
《ps》20《/ps》
《list》
《article》
《careaid》16《/careaid》
《careaname》深圳《/careaname》
《careapic》04732773115385188.jpg《/careapic》
《englishname》shenzhen《/englishname》
《goodsCount》21《/goodsCount》
《imgurl》www.xxxxxx.cn\/data\/upload\/shop\/adv\/04825861373036910.png《/imgurl》
《/article》
《article》
《careaid》18《/careaid》
《careaname》湖南《/careaname》
《careapic》04732773115385188.jpg《/careapic》
《englishname》hunan《/englishname》
《goodsCount》33《/goodsCount》
《imgurl》www.xxxxxx.cn/data/upload/shop/adv/04825861373036910.png《/imgurl》
《/article》
《article》
《careaid》2《/careaid》
《careaname》北京《/careaname》
《careapic》04732773115385188.jpg《/careapic》
《englishname》beijing《/englishname》
《goodsCount》70《/goodsCount》
《imgurl》www.xxxxxx.cn/data/upload/shop/adv/04825861373036910.png《/imgurl》
《/article》
《/list》
《/area》
《goodsinfo》
《cnt》1《/cnt》
《p》1《/p》
《ps》20《/ps》
《list》
《article》
《goodsid》211《/goodsid》
《goodsname》大保健包夜《/goodsname》
《goodsprice》1000.00《/goodsprice》
《mainimage》www.xxxxxx.cn/data/upload/shop/adv/04825861373036910.png《/mainimage》
《/article》
《/list》
《/goodsinfo》
《/data》
其中list中的數字下標用article代替,附php版本自定義的遞歸數組轉xml函數:
function ArrtoXml($data, $rootNodeName = ‘data’, $xml=null)
{
// turn off compatibility mode as simple xml throws a wobbly if you don‘t.
if (ini_get(’zend.ze1_compatibility_mode‘) == 1)
{
ini_set (’zend.ze1_compatibility_mode‘, 0);
}
if ($xml == null)
{
$xml = simplexml_load_string(“《?xml version=’1.0‘ encoding=’utf-8‘?》《$rootNodeName /》”);
}
// loop through the data passed in.
foreach($data as $key =》 $value)
{
// no numeric keys in our xml please!
if (is_numeric($key))
{
// make string key.。.
$key = “article”。 (string) $key;
}
// replace anything not alpha numeric
$key = preg_replace(’/[^a-z]/i‘, ’‘, $key);
// if there is another array found recrusively call this function
if (is_array($value))
{
$node = $xml-》addChild($key);
// recrusive call.
ArrtoXml($value, $rootNodeName, $node);
}
else
{
// add single node.
$value = htmlentities($value);
$xml-》addChild($key,$value);
}
}
// pass back as string. or simple xml object if you want!
return $xml-》asXML();
}
注意事項:
當返回js時,即data_type=js,在json串前加入 RESULT=,即格式為RESULT={json串}。
當返回html時,即data_type=html,在返回的字符串中加入html頭部,即DOCTYPE、HEAD、BODY等信息。
2.添加,修改,刪除
當調用增刪改數據接口時,code為1時表操作成功,當code大于1時,表示操作失敗,并在msg中返回錯誤信息,如下:
{
“code”:101,
“msg”:“操作參數丟失!”
}
當然,若增刪改后仍然需要返回響應數據,格式同查詢。
評論
查看更多