MeterSphere使用Python后置腳本獲取Json響應數據作為下一個接口參數
前提:
因刪除應用需要用到應用id,但列表中的應用很多,需要查到對應的應用名稱獲得對應的應用id
解決方法:通過Python獲取json數據,並比對應用名稱獲得應用id
該查詢應用請求接口返回的響應體:
{
"result": true,
"message": null,
"data": [
{
"appTypeId": "1",
"appTypeName": "智慧教學",
"apps": [
{
"appId": "03AAED47086C2D3E8E14E97069356FBB",
"appName": "移動門戶",
"appOldName": null,
"skipUrl": "http://10.4.3.8:12207?token=27509A885657461E893FD026DD0048F8&orgcode=8651010000002",
"url": "http://10.4.3.8:12207?token={token}&orgcode={orgcode}",
"provide": "198",
"protocolNum": "0",
"tokenNum": null,
"enable": null,
"tokenTime": "1626255328365.56",
"version": "1.03",
"model": "3",
"ifDelete": "0",
"imgUrl": "icon/2/JF_ISMPA.png",
"remark": "",
"ifEnable": "1"
},
{
"appId": "D74728051B02F597366A78AFAC144CD8",
"appName": "課堂生態",
"appOldName": null,
"skipUrl": "http://10.4.3.8:12202/build/index.html?token=27509A885657461E893FD026DD0048F8&orgcode=8651010000002",
"url": "http://10.4.3.8:12202/build/index.html?token={token}&orgcode={orgcode}",
"provide": "198",
"protocolNum": "0",
"tokenNum": null,
"enable": null,
"tokenTime": "1626255328365.7",
"version": "2.31",
"model": "3",
"ifDelete": "0",
"imgUrl": "icon/2/JF_ISCEM2.31.png",
"remark": "",
"ifEnable": "1"
},
{
"appId": "F0279637C91520BB82941C8E37930982",
"appName": "基礎平台",
"appOldName": null,
"skipUrl": "http://10.4.3.8:12201/index.html#/home/loading?token=27509A885657461E893FD026DD0048F8&orgcode=8651010000002",
"url": "http://10.4.3.8:12201/index.html#/home/loading?token={token}&orgcode={orgcode}",
"provide": "198",
"protocolNum": "0",
"tokenNum": null,
"enable": null,
"tokenTime": "1626255328365.72",
"version": "2.0",
"model": "3",
"ifDelete": "0",
"imgUrl": "icon/2/JF_ISBMP2.0.png",
"remark": "",
"ifEnable": "1"
}
],
"appNx": [],
"enable": "1"
},
{
"appTypeId": "2",
"appTypeName": "智慧管理",
"apps": [
{
"appId": "743E113BFCD84CAEB9A46405FB4DB1F6",
"appName": "基礎test",
"appOldName": null,
"skipUrl": "http://10.10.0.59:1222/?orgCode=8651010000002&token=27509A885657461E893FD026DD0048F8",
"url": "http://10.10.0.59:1222/?orgCode={orgcode}&token={token}",
"provide": "198",
"protocolNum": "0",
"tokenNum": null,
"enable": null,
"tokenTime": "1626255328365.75",
"version": "3.1",
"model": "2",
"ifDelete": "1",
"imgUrl": "icon/4/基礎test2021-7-13-102419.jpg",
"remark": "",
"ifEnable": "1"
}
],
"appNx": [],
"enable": "1"
},
{
"appTypeId": "3",
"appTypeName": "智慧考試",
"apps": [],
"appNx": [],
"enable": "1"
},
{
"appTypeId": "4",
"appTypeName": "其他",
"apps": [],
"appNx": [],
"enable": "1"
}
],
"code": null,
"total": 0,
"timeStamp": null
}
后置腳本獲取json
操作步驟:
import json
def list_get_index(l_list, key, value):
"""list元素為dict,根據dict中某個元素值返回list索引"""
index = 0
for dic in l_list:
if dic[key] == value:
return index
index += 1
res = prev.getResponseDataAsString() #res為響應結果,類型為unicode
dic_res = json.loads(res) #將unicode轉為dict
u_list_apps = dic_res['data'][0]['apps'] #格式為list,其中數據為帶u的unicode格式
print(u_list_apps)
print(type(u_list_apps))
deunicode_apps = str(u_list_apps).decode('utf-8').replace('\'','\"').decode('unicode-escape').replace('u\"','\"') #去掉u之后的unicode格式\
print(deunicode_apps) #不帶u的uicode格式
print(type(deunicode_apps))
list_apps = eval(deunicode_apps)
print(list_apps)
print(type(list_apps))
index = list_get_index(list_apps, 'appName', "\xe6\xb5\x8b\xe8\xaf\x95\xe6\x96\xb0\xe5\xa2\x9e\xe5\xba\x94\xe7\x94\xa8") # 獲取data中目標字典的索引
appId = list_apps[index]['appId']
print(appId)
vars.put("appId", appId) #設置變量

控制台輸出結果:
獲得的應用id:
appId:0530E23590F742E2A845637D8E9B192F
在刪除應用接口中的使用:
{
"version": "2.0",
"data": {
"AppID": "${appId}"
},
"token": "${userToken}",
"orgcode": "8651010000002",
"Operation": {
"UserID": "admin",
"UserName": "admin",
"UserType": "0",
"OpType": "刪除",
"OpRemark": "刪除"
}
}