1003.登录及Api密钥说明
当开户获取用户名和密码后,才能访问相关API接口。
访问API接口不是以常规用户名密码登录的方式,而是在请求中携带用户名以及token参数的方式,token是由用户名、密码、具体的请求参数根据特定算法动态生成(该请求中不包含密码)。
访问api接口的具体方法以vin码解析为例:
- http://api.17vin.com:8080/?vin=LFMGJE720DS070251&user=testuser&token=b0f27b65980b01e45a81908b936aa30f
上述URL可以认为由url_prefix,url_parameters,user,token等4个部分组成,上述案例中,其中:
url_prefix=http://api.17vin.com:8080
url_parameters=/?vin=LFMGJE720DS070251
user=testuser
token=b0f27b65980b01e45a81908b936aa30f
上述URL可被抽象为如下格式:
http://api.17vin.com:8080/?para1={para1}¶2={para2}....¶N={paraN}&user={username}&token={token}
上述4个参数中,其中url_prefix与user固定不变,url_parameters为实际请求的参数,如:
- vin解码:/?vin=LFMGJE720DS070251
- 某VIN码下一级目录:/toyota?action=cata1&vin=LFMGJE720DS070251
- 某VIN码下二级目录:/toyota?action=cata2&vin=LFMGJE720DS070251&cata1_code=1
- 某VIN码下配件列表:/toyota?action=part&vin=LFMGJE720DS070251&last_cata_code=0901_090562C-0001&last_cata_code_level=2
- 某VIN码下配件号码搜索:/?action=search_part_number&vin=LFMGJE720DS070251&query_match_type=exact&query_part_number=091140G010
注意:如果是采用post方式提交数据,在计算token的时候,也需要把相关参数先拼接成如上get形式的url_parameters形式然后再计算token
若url_parameters发生变化,则token需要重新计算, 也就是说每个不同的请求,token都将不同。token的算法如下(伪代码):
MD5(MD5(username)+MD5(password)+url_parameters)案例:
对应上述案例URL,假设用户名为myusername,密码为mypassword,那么其token值将变为92882f5ad20cf8f3330e970af12b4214,在程序中,该值由如下伪代码算出:
MD5(MD5('myusername')+MD5('mypassword')+'/?vin=LFMGJE720DS070251')比如在mysql数据库中,可以用以下实际程序代码得到token值:
select MD5(concat(MD5('myusername'),MD5('mypassword'),'/?vin=LFMGJE720DS070251'))最终得到的完整URL如下:
http://api.17vin.com:8080/?vin=LFMGJE720DS070251&user=myusername&token=92882f5ad20cf8f3330e970af12b4214
(注:此url不可成功访问,仅为示意)