車檢狀態(tài)查詢API
接口描述
- 根據(jù)車牌號查詢車檢狀態(tài)
- 只有經(jīng)過授權(quán),方可調(diào)用
- 根據(jù)車牌號查詢該車當(dāng)前的車檢業(yè)務(wù)辦理狀態(tài)
- 檢測進(jìn)度及結(jié)果
- 業(yè)務(wù)辦理進(jìn)度
- 歷史檢測報告(開發(fā)中)
請求信息
HTTP協(xié)議:HTTP
調(diào)用地址:038e35c75d6c4990943c258b49d65267-cn-beijing.alicloudapi.com/api/flow
方法:POST
請求Body描述(Json)
{
"plate_numer":"京AAR670"
}
返回信息
返回參數(shù)類型
JSON
返回結(jié)果示例
{
"result": "success",
"data": [
{
"plate_number": "京AAR670",
"datetime": "2019-03-11 13:58:51",
"status": "登記完成"
},
{
"plate_number": "京AAR670",
"datetime": "2019-03-11 13:58:55",
"status": "等待尾氣檢測"
},
{
"plate_number": "京AAR670",
"datetime": "2019-03-11 14:05:55",
"status": "尾氣檢測合格"
},
{
"plate_number": "京AAR670",
"datetime": "2019-03-13 14:44:24",
"status": "安檢檢測合格"
},
{
"plate_number": "京AAR670",
"datetime": "2019-03-13 14:44:24",
"status": "總檢審核合格"
},
{
"plate_number": "京AAR670",
"datetime": "2019-03-13 16:35:23",
"status": "檢字已發(fā)"
}
],
"plate_number": "京AAR670"
}
異常返回示例
{
"result": "fail",
"data": []
}
API調(diào)用
公共入?yún)?/h3>
公共請求參數(shù)是指每個接口都需要使用到的請求參數(shù)改化。
參數(shù)名稱 | 位置 | 必須 | 描述 |
---|---|---|---|
X-Ca-Key | Header | 是 | Appkey套菜,調(diào)用API的身份標(biāo)識喜爷,可以到阿里云API網(wǎng)關(guān)控制臺申請 |
X-Ca-Signature | Header | 是 | 通過簽名計算規(guī)則計算的請求簽名串丽涩,參照:<a href="#Signature">簽名計算規(guī)則</a> |
X-Ca-Timestamp | Header | 否 | API 調(diào)用者傳遞時間戳艇棕,值為當(dāng)前時間的毫秒數(shù)咽瓷,也就是從1970年1月1日起至今的時間轉(zhuǎn)換為毫秒,時間戳有效時間為15分鐘 |
X-Ca-Nonce | Header | 否 | API請求的唯一標(biāo)識符贸街,15分鐘內(nèi)同一X-Ca-Nonce不能重復(fù)使用庵寞,建議使用 UUID,結(jié)合時間戳防重放 |
Content-MD5 | Header | 否 | 當(dāng)請求 Body 非 Form 表單時薛匪,需要計算 Body 的 MD5 值傳遞給云網(wǎng)關(guān)進(jìn)行 Body MD5 校驗 |
X-Ca-Signature-Headers | Header | 否 | 指定哪些Header參與簽名捐川,支持多值以","分割,默認(rèn)只有X-Ca-Key參與簽名逸尖,為安全需要也請將X-Ca-Timestamp古沥、X-Ca-Nonce進(jìn)行簽名,例如:X-X-Ca-Signature-Headers:Ca-Timestamp,X-Ca-Nonce |
簽名計算規(guī)則
請求簽名娇跟,是基于請求內(nèi)容計算的數(shù)字簽名岩齿,用于API識別用戶身份“客戶端調(diào)用API時盹沈,需要在請求中添加計算的簽名(X-Ca-Signature)。
簽名計算流程
準(zhǔn)備APPkey → 構(gòu)造待簽名字符串stringToSign → 使用Secret計算簽名
1.準(zhǔn)備APPKey
Appkey吃谣,調(diào)用API的身份標(biāo)識乞封,可以到阿里云API網(wǎng)關(guān)控制臺申請
2.構(gòu)造待簽名字符串stringToSign
String stringToSign=
HTTPMethod + "\n" +
Accept + "\n" + //建議顯示設(shè)置 Accept Header。當(dāng) Accept 為空時岗憋,部分 Http 客戶端會給 Accept 設(shè)置默認(rèn)值為 */*肃晚,導(dǎo)致簽名校驗失敗。
Content-MD5 + "\n"
Content-Type + "\n" +
Date + "\n" +
Headers +
Url
HTTPMethod
為全大寫仔戈,如 POST关串。
Accept、Content-MD5监徘、Content-Type悍缠、Date 如果為空也需要添加換行符”\n”,Headers如果為空不需要添加”\n”耐量。
Content-MD5
Content-MD5 是指 Body 的 MD5 值飞蚓,只有當(dāng) Body 非 Form 表單時才計算 MD5,計算方式為:
String content-MD5 = Base64.encodeBase64(MD5(bodyStream.getbytes("UTF-8")));
bodyStream 為字節(jié)數(shù)組廊蜒。
Headers
Headers 是指參與 Headers 簽名計算的 Header 的 Key趴拧、Value 拼接的字符串,建議對 X-Ca 開頭以及自定義 Header 計算簽名山叮,注意如下參數(shù)不參與 Headers 簽名計算:X-Ca-Signature著榴、X-Ca-Signature-Headers、Accept屁倔、Content-MD5脑又、Content-Type、Date。
Headers 組織方法:
先對參與 Headers 簽名計算的 Header的Key 按照字典排序后使用如下方式拼接问麸,如果某個 Header 的 Value 為空往衷,則使用 HeaderKey + “:” + “\n”參與簽名,需要保留 Key 和英文冒號严卖。
String headers =
HeaderKey1 + ":" + HeaderValue1 + "\n"\+
HeaderKey2 + ":" + HeaderValue2 + "\n"\+
...
HeaderKeyN + ":" + HeaderValueN + "\n"
將 Headers 簽名中 Header 的 Key 使用英文逗號分割放到 Request 的 Header 中席舍,Key為:X-Ca-Signature-Headers。
Url
Url 指 Path + Query + Body 中 Form 參數(shù)哮笆,組織方法:對 Query+Form 參數(shù)按照字典對 Key 進(jìn)行排序后按照如下方法拼接来颤,如果 Query 或 Form 參數(shù)為空,則 Url = Path稠肘,不需要添加 福铅?,如果某個參數(shù)的 Value 為空只保留 Key 參與簽名项阴,等號不需要再加入簽名滑黔。
String url =
Path +
"?" +
Key1 + "=" + Value1 +
"&" + Key2 + "=" + Value2 +
...
"&" + KeyN + "=" + ValueN
注意這里 Query 或 Form 參數(shù)的 Value 可能有多個,多個的時候只取第一個 Value 參與簽名計算鲁冯。
3.使用Secret計算簽名
Mac hmacSha256 = Mac.getInstance("HmacSHA256");
byte[] keyBytes = secret.getBytes("UTF-8");
hmacSha256.init(new SecretKeySpec(keyBytes, 0, keyBytes.length, "HmacSHA256"));
String sign = new String(Base64.encodeBase64(Sha256.doFinal(stringToSign.getBytes("UTF-8")),"UTF-8"));
Secret 為 APP 的密鑰拷沸,請在應(yīng)用管理中獲取。
錯誤碼
如何獲取公共錯誤
所有的 API 請求只要到達(dá)了網(wǎng)關(guān)薯演,網(wǎng)關(guān)就會返回請求結(jié)果信息撞芍。
用戶需要查看返回結(jié)果的頭部,即 Header 部分跨扮。返回參數(shù)如示例:
//請求唯一ID序无,請求一旦進(jìn)入API網(wǎng)關(guān)應(yīng)用后,API網(wǎng)關(guān)就會生成請求ID并通過響應(yīng)頭返回給客戶端衡创,建議客戶端與后端服務(wù)都記錄此請求ID帝嗡,可用于問題排查與跟蹤
X-Ca-Request-Id: 7AD052CB-EE8B-4DFD-BBAF-EFB340E0A5AF
//API網(wǎng)關(guān)返回的錯誤消息,當(dāng)請求出現(xiàn)錯誤時API網(wǎng)關(guān)會通過響應(yīng)頭將錯誤消息返回給客戶端
X-Ca-Error-Message: Invalid Url
//當(dāng)打開Debug模式后會返回Debug信息璃氢,此信息后期可能會有變更哟玷,僅用做聯(lián)調(diào)階段參考
X-Ca-Debug-Info: {"ServiceLatency":0,"TotalLatency":2}
在 Header 中獲得 X-Ca-Error-Message 可以基本明確報錯原因,而 X-Ca-Request-Id 可以用于提供給這邊的支持人員一也,供支持人員搜索日志巢寡。
公共錯誤碼
客戶端錯誤
錯誤代碼 | Http 狀態(tài)碼 | 語義 | 解決方案 | |
---|---|---|---|---|
Throttled by USER Flow Control | 403 | 因用戶流控被限制 | 調(diào)用頻率過高導(dǎo)致被流控,可以聯(lián)系 API 服務(wù)商協(xié)商放寬限制椰苟。 | |
Throttled by APP Flow Control | 403 | 因APP流控被限制 | 調(diào)用頻率過高導(dǎo)致被流控抑月,可以聯(lián)系 API 服務(wù)商協(xié)商放寬限制。 | |
Throttled by API Flow Control | 403 | 因 API 流控被限制 | 調(diào)用頻率過高導(dǎo)致被流控舆蝴,可以聯(lián)系 API 服務(wù)商協(xié)商放寬限制谦絮。 | |
Throttled by DOMAIN Flow Control | 403 | 因二級域名流控被限制 | 直接訪問二級域名調(diào)用 API题诵,每天被訪問次數(shù)上限1000次。 | |
TThrottled by GROUP Flow Control | 403 | 因分組流控被限制 | 調(diào)用頻率過高導(dǎo)致被流控层皱,可以聯(lián)系 API 服務(wù)商協(xié)商放寬限制性锭。 | |
Quota Exhausted | 403 | 調(diào)用次數(shù)已用完 | 購買的次數(shù)已用完。 | |
Quota Expired | 403 | 購買次數(shù)已過期 | 購買的次數(shù)已經(jīng)過期奶甘。 | |
User Arrears | 403 | 用戶已欠費 | 請盡快充值續(xù)費篷店。 | |
Empty Request Body | 400 | body 為空 | 請檢查請求 Body 內(nèi)容祭椰。 | |
Invalid Request Body | 400 | body 無效 | 請檢查請求 Body臭家。 | |
Invalid Param Location | 400 | 參數(shù)位置錯誤 | 請求參數(shù)位置錯誤。 | |
Unsupported Multipart | 400 | 不支持上傳 | 不支持上傳文件方淤。 | |
Invalid Url | 400 | Url 無效 | 請求的 Method钉赁、Path 或者環(huán)境不對。請參照錯誤說明 Invalid Url携茂。 | |
Invalid Domain | 400 | 域名無效 | 請求域名無效你踩,根據(jù)域名找不到 API。請聯(lián)系 API 服務(wù)商讳苦。 | |
Invalid HttpMethod | 400 | HttpMethod 無效 | 輸入的 Method 不合法带膜。 | |
Invalid AppKey | 400 | AppKey 無效或不存在 | 請檢查傳入的 AppKey。注意左右空格的影響鸳谜。 | |
Invalid AppSecret | 400 | APP 的Secret 錯誤 | 檢查傳入的 AppSecret膝藕。注意左右空格的影響。 | |
Timestamp Expired | 400 | 時間戳過時 | 請核對請求系統(tǒng)時間是否為標(biāo)準(zhǔn)時間咐扭。 | |
Invalid Timestamp | 400 | 時間戳不合法 | 請參照 請求簽名說明文檔芭挽。 | |
Empty Signature | 404 | 簽名為空 | 請傳入簽名字符串,請參照 請求簽名說明文檔蝗肪。 | |
Invalid Signature, Server StringToSign:%s | 400 | 簽名無效 | 簽名無效袜爪,參照 Invalid Signature 錯誤說明 | |
Invalid Content-MD5 | 400 | Content-MD5 值不合法 | 請求 Body 為空,但傳入了 MD5 值薛闪,或 MD5 值計算錯誤辛馆。請參照 請求簽名說明文檔。 | |
Unauthorized | 403 | 未被授權(quán) | APP 未獲得要調(diào)用的 API 的授權(quán)豁延。請參照錯誤說明 Unauthorized昙篙。 | |
Nonce Used | 400 | SignatureNonce | 已被使用 | SignatureNonce 不能被重復(fù)使用。 |
API Not Found | 400 | 找不到 API | 傳入的APIdi地址或者HttpMethod不正確术浪,或已下線瓢对。 |
服務(wù)器端錯誤(調(diào)用 API)
以下為API服務(wù)端錯誤,如果頻繁錯誤胰苏,可聯(lián)系服務(wù)商硕蛹。
錯誤代碼 | Http狀態(tài)碼 | 語義 | 解決方案 |
---|---|---|---|
Internal Error | 500 | 內(nèi)部錯誤 | 建議重試,或者聯(lián)系服務(wù)商 |
Failed To Invoke Backend Service | 500 | 底層服務(wù)錯誤 | API 提供者底層服務(wù)錯誤,建議重試,如果重試多次仍然不可用法焰,可聯(lián)系 API 服務(wù)商解決 |
Service Unavailable | 503 | 服務(wù)不可用 | 建議重試,或者聯(lián)系服務(wù)商 |
Async Service | 504 | 后端服務(wù)超時 | 建議重試,或者聯(lián)系服務(wù)商 |