API的前言
網際網路的應用特點是具有開放式的業務體系結構之一。關鍵的技術就是網絡控制與應用層之間的應用程式接口--API。通過API接口很多問題便水到渠成,迎刃而解。
API到底是一種什麼技術呢
具有開放式的業務體系結構将是下一代網絡的重要特征之一。其中,關鍵的技術之一就是網絡控制與應用層之間的應用程式接口(API)。通過聯接應用程式API,業務開發商 、獨立軟體提供商 (ISV)等第三方應用可以獲得使用現有網絡資源的能力,不用再去編寫領域外的程式,即可拿來提供商開發好的專業程式,通過各行各業的API接口完美的解決了行業之間的壁壘難題。
API--應用程式接口的簡稱
API 是一些功能、定義或者協定的集合,提供應用程式或者程式開發人員基于軟體通路一組例程的能力,對外封裝完善,調用時無需編寫與學習 API内部源碼,依據 API文檔功能說明書來使用即可。
API接口的資料有多種格式
目前 API 接口支援 XLSX、CSV、RDF、JSON、XML等資料格式,其中 JSON 和 XML 是主流的資料格式,幾乎所有 API 接口都支援這兩種資料格式。
JSON (JavaScript Object Notation)是一種輕量級的資料交換格式,具有良好的可讀和便于快速編寫的特性,可在不同平台之間進行資料交換。
XML 是擴充标記語言(Extensible Markup Language),用于标記電子檔案使其具有結構性的标記語言,可以用來标記資料、定義資料類型,是一種允許使用者對自己的标記語言進行定義的源語言。
JSON與XML相比的不同特點
JSON與XML 相比是一種更加輕量級的資料格式,而且更加易于解析,支援多種語言,這使得 JSON 在大資料時代備受歡迎,而且随着應用程式和平台的不斷發展,應用程式的功能變得越來越複雜,但為了保證使用者體驗的優化,需要通過重構代碼,将複雜的邏輯封裝在内部,保持其對外提供的 API 仍然簡潔。JSON 也正因為簡潔這一優勢逐漸超越了XML,成為了應用間的首選資料交換格式。
API接口功能:
使用者系統接口可查詢個人資訊、賬戶收支明細、即将過期接口、目前接口請求數,無需登入使用者就可便捷查詢。
Api文檔:
子接口:
- 接口用量查詢
- 個人資訊
- 即将到期接口
- 賬戶明細
- 當天請求數
接口位址: https://登入後顯示/api/67/245(支援:http/https)
傳回格式:json,xml
請求方式:GET,POST
POST 請求需要設定Header頭:Content-Type: application/x-www-form-urlencoded;charset=utf-8
請求說明:
名稱 | 必填 | 類型 | 說明 | 示例 參數另存 |
appid | 是 | String | 應用ID,在背景我的應用檢視或者添加 | 1 |
format | 否 | String | 傳回資料格式類型,每個接口已經說明支援傳回格式:json,xml | json |
sign | 是 | String | 1.使用Md5方式驗證,參數按一定規則md5後傳回的字元串,詳情點選這裡閱讀 2.使用Hash驗證方式,直接跟上密鑰即可。 通過我的應用裡面修改驗證方式 | 52a32be274a5c |
Md5驗證方式-加密順序:
sign = MD5( appid1formatjson密鑰) 檢視加密規則說明 密鑰不需要鍵名,請直接跟上32位的密鑰
紅色部分代表參數值,appid預設為1,請修改為自己的appid值,去我的應用檢視以及密鑰
*注意:空值不參與加密。
傳回參數說明:
名稱 | 必填 | 類型 | 說明 | 示例 參數另存 |
api_auth | 否 | Integer | 授權方式:1 按次,2按月,0免費 | 月 |
api_id | 否 | Integer | 接口的唯一辨別 | 105 |
api_name | 否 | String | 接口名稱 | 全國城市概要簡介 |
available | 否 | Integer | 可用次數或者到期日期,按次計費的接口顯示的是可用次數,按月計費的顯示的是到期日期 | 2020-10-09 |
codeid | 否 | Integer | 狀态碼,傳回10000狀态都會進行計費。具體說明可檢視狀态碼說明 | 10000 |
curtime | 否 | String | 目前伺服器時間戳 | 1605170402 |
message | 否 | String | 請求狀态說明 | 操作成功! |
retdata | 否 | Array | 回資料集合,可能是資料、對象或者字元串 |
JSON傳回示例:
| |||
| |||
| ||
curtime | : | 1605170402 |
狀态碼說明:
狀态碼 | 說明 |
10000 | 傳回成功 |
10001 | appid必須指定,可以我的應用裡面檢視 |
10002 | sign值必須指定,加密規則請前往幫助中心檢視 |
10003 | sign值驗證不通過,加密規則請前往幫助中心檢視 |
10004 | 時差不能超過10分鐘,可以不傳遞這個參數,注意時間戳機關是秒 |
10005 | appid錯誤,請檢查appid值,前往會員中心->我的應用檢視或添加 |
10006 | 目前IP位址未授權,請前往使用者中心->我的應用添加ip{@info} |
10007 | 應用被禁用,請聯系客服處理 |
10008 | 應用内沒有該接口,請到我的應用裡面添加這個接口 |
10009 | api接口不存在 |
10010 | 您沒有添加該api接口 |
10011 | api已經到期 |
10012 | 沒有訂購任何api,請前往購買後再操作 |
10013 | 該接口已經暫停使用 |
10014 | 未知的錯誤,可以聯系客服處理 |
10015 | 參數個數錯誤 |
10019 | {@info} |
10017 | time必須是整型 |
10018 | 次數不足 |
10020 | 子接口不存在,可能已經被關閉 |
10021 | 伺服器發生錯誤 |
10022 | 帳戶餘額不足,請充值! |
10023 | 訂單送出成功,等待回調結果 |
10024 | 調試模式資料 |
10025 | 查無資料 |
請求示例:
- PHP
- Python
$method = 'GET'; //請求方式 GET,POST
$secretType = 'MD5'; //驗證方式MD5,Hash 通過背景 我的應用去修改
$api_url = 'https://登入後顯示/api/67/245';
$appid = '應用id';// 在背景我的應用檢視;
$secret = '應用密鑰';// 在背景我的應用檢視;
$data = array(
'appid'=> '1',
'format'=> 'json',
);
$data['appid'] = $appid;
$data['time'] = time();//目前伺服器時間
if('MD5' == $secretType){
ksort($data); //按照鍵名對數組排序,為數組值保留原來的鍵。
$md5String = '';
foreach($data as $key=>$val){
if(strlen($val)>0){ //過濾空值
$md5String.=$key.$val;
}
}
$secret = md5($md5String.$secret);
}
$data['sign'] = $secret;
if('GET'==$method){
$sendUrl = $api_url.'?'.http_build_query($data); //把資料轉換成url參數形式,a=b&c=d&e=f
$result = file_get_contents($sendUrl);
}else{
$header = ['Content-Type: application/x-www-form-urlencoded;charset=utf-8'];
$ch = curl_init();
if(is_array($data))$data = http_build_query($data);
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, true);//POST
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_ENCODING,'gzip,deflate');
$result = curl_exec($ch);
}
$result = json_decode($result,true);
print_r($result);