天天看點

網絡控制與應用層之間的應用程式接口-API

作者:Ai視界2020

API的前言

網際網路的應用特點是具有開放式的業務體系結構之一。關鍵的技術就是網絡控制與應用層之間的應用程式接口--API。通過API接口很多問題便水到渠成,迎刃而解。

網絡控制與應用層之間的應用程式接口-API

API到底是一種什麼技術呢

具有開放式的業務體系結構将是下一代網絡的重要特征之一。其中,關鍵的技術之一就是網絡控制與應用層之間的應用程式接口(API)。通過聯接應用程式API,業務開發商 、獨立軟體提供商 (ISV)等第三方應用可以獲得使用現有網絡資源的能力,不用再去編寫領域外的程式,即可拿來提供商開發好的專業程式,通過各行各業的API接口完美的解決了行業之間的壁壘難題。

API--應用程式接口的簡稱

API 是一些功能、定義或者協定的集合,提供應用程式或者程式開發人員基于軟體通路一組例程的能力,對外封裝完善,調用時無需編寫與學習 API内部源碼,依據 API文檔功能說明書來使用即可。

網絡控制與應用層之間的應用程式接口-API

API接口的資料有多種格式

目前 API 接口支援 XLSX、CSV、RDF、JSON、XML等資料格式,其中 JSON 和 XML 是主流的資料格式,幾乎所有 API 接口都支援這兩種資料格式。

JSON (JavaScript Object Notation)是一種輕量級的資料交換格式,具有良好的可讀和便于快速編寫的特性,可在不同平台之間進行資料交換。

XML 是擴充标記語言(Extensible Markup Language),用于标記電子檔案使其具有結構性的标記語言,可以用來标記資料、定義資料類型,是一種允許使用者對自己的标記語言進行定義的源語言。

網絡控制與應用層之間的應用程式接口-API

JSON與XML相比的不同特點

JSON與XML 相比是一種更加輕量級的資料格式,而且更加易于解析,支援多種語言,這使得 JSON 在大資料時代備受歡迎,而且随着應用程式和平台的不斷發展,應用程式的功能變得越來越複雜,但為了保證使用者體驗的優化,需要通過重構代碼,将複雜的邏輯封裝在内部,保持其對外提供的 API 仍然簡潔。JSON 也正因為簡潔這一優勢逐漸超越了XML,成為了應用間的首選資料交換格式。

網絡控制與應用層之間的應用程式接口-API

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傳回示例:

codeid : 10000
message : 操作成功!
retdata [4]
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);

                                   

繼續閱讀