我們可以通過requests來實現乙個京東聯盟開放平台api client。因為京東聯盟開放平台的api都有乙個統一的形式和簽名方法,所以可以通過乙個比較簡單的實現來編寫乙個通用的client,可以比較簡單的根據開放平台的文件中的方法名和業務引數來直接進行實際的呼叫。
相關的**實現如下(也可以在看到):
import datetime
import requests
import hashlib
import json
import urllib.parse
jd_api_root = ''
class jdapiclient(object):
self.secret_key = secret_key
def get_sign(self, params):
params_list = sorted(list(params.items()), key=lambda x: x[0])
params_bytes = (self.secret_key + ''.join("%s%s" % (k, v) for k, v in params_list) + self.secret_key).encode('utf-8')
sign = hashlib.md5(params_bytes).hexdigest().upper()
return sign
def call(self, method, param_json, **kwargs):
params =
if isinstance(param_json, (dict, list)):
params["param_json"] = json.dumps(param_json)
else:
params["param_json"] = param_json
params['sign'] = self.get_sign(params)
resp = requests.get(jd_api_root, params=params, **kwargs)
return resp
上面**中,get_sign
函式是用來引數中簽名欄位sign的,需要注意的是在python 3中的bytes和str之間的編碼和解碼,call
函式封裝了requests來進行http請求的傳送,並且返回對應的response物件,可以通過這個物件的.json()方法。將api介面返回的json轉化成python物件。
import pprint
resp = client.call("jd.union.open.goods.promotiongoodsinfo.query",
)pprint.pprint(json.loads(resp.json()['jd_union_open_goods_promotiongoodsinfo_query_response']['result']))
對應的結果為:
],
'message': '介面成功',
'requestid': '...'}
穩 準 狠 京東開放平台的「速度與激情」
最近,速度與激情7 在國內颳起了一股不小的旋風,據統計,速度與激情7 上映首日便以4.25億的成績傲視群雄,遠超去年7月 變形金剛4 創下的2.23億首日紀錄。現如今,任何熱點事兒都得冠上 速度與激情 的字眼,這無疑從側面反映了這部劇的火爆。資料顯示,截至2014年底,已有6萬個商家入駐京東開放平台...
騰訊開放平台的應用接入
2 合作優勢。number1 數億的活躍使用者,利用強大的傳播平台,您的產品能最快速度送達使用者。3 合作方式。以開放,公平的原則,對於優秀的第三方應用的優秀產品,我們將進一步洽談。建立應用過程。第一 建立並開發應用。第三 雙方洽談簽訂協議。第三方提供 優秀社群應用 優秀的運營團隊持續運營 您只需要...
針對開放平台的架構理解
要做好資源的管理 資源的匯聚 圖中所有語法往 平台中匯聚 資源的使用 通過資料快取,限流對資源進行控制 對外介面層 主要用於與外面業務平台的乙個對接 包括收集平台認證及使用者資訊 服務層根據開放平台的每乙個介面和收集的使用者進行針對性的配置,包括快取策略,限流策略,歷史資料的拉取 協議層過渡層,ht...