本文嘗試基于文心一言AI大模型,編寫一段python3程序以獲取華為分布式塊存儲(chǔ)REST接口的實(shí)時(shí)數(shù)據(jù)。
一、用文心一言AI大模型將需求轉(zhuǎn)化為樣例代碼
1、第一次對(duì)話:“python3寫一段從rest服務(wù)器獲取數(shù)據(jù)的樣例代碼”
同時(shí)生成了以下注解?
這段代碼首先定義了一個(gè)函數(shù)?
get_data_from_rest_server
,該函數(shù)使用?requests.get
?方法向指定的 URL 發(fā)送 GET 請(qǐng)求。如果請(qǐng)求成功(即響應(yīng)的狀態(tài)碼為 200),則將響應(yīng)的 JSON 數(shù)據(jù)返回。否則,它將打印出錯(cuò)誤消息并返回 None。然后,我們調(diào)用這個(gè)函數(shù)來(lái)獲取數(shù)據(jù),并打印出獲取到的數(shù)據(jù)。注意你需要將?url
?替換為你的 REST 服務(wù)器的實(shí)際 URL。?
??2、第二次對(duì)話:“以上請(qǐng)求需帶入服務(wù)器的認(rèn)證參數(shù)”
同時(shí)生成了以下注解?
?在上述代碼中,我們通過(guò)在?
requests.get
?方法中傳遞?auth=(username, password)
?來(lái)提供服務(wù)器的認(rèn)證參數(shù)。這樣,當(dāng)你發(fā)送請(qǐng)求時(shí),requests
?會(huì)自動(dòng)將認(rèn)證參數(shù)添加到請(qǐng)求中,從而完成身份驗(yàn)證過(guò)程。
3、第三次對(duì)話:“以上代碼需代入請(qǐng)求消息頭”
?
import requests
# 定義服務(wù)器認(rèn)證參數(shù)的用戶名和密碼
username = 'your_username'
password = 'your_password'
def get_data_from_rest_server():
# 將此 URL 替換為你的 REST 服務(wù)器 URL
url = 'http://example.com/api/data'
# 定義請(qǐng)求頭,可以包含自定義的頭部字段和值
headers = {
'Content-Type': 'application/json', # 聲明請(qǐng)求的內(nèi)容類型為 JSON
'Authorization': f'Basic {username}:{password}', # 添加基本的身份驗(yàn)證頭部字段
}
# 使用 GET 方法請(qǐng)求數(shù)據(jù),并攜帶服務(wù)器認(rèn)證參數(shù)和請(qǐng)求頭
response = requests.get(url, headers=headers)
# 檢查響應(yīng)的狀態(tài)碼,如果請(qǐng)求成功(狀態(tài)碼為 200),則處理響應(yīng)的數(shù)據(jù)
if response.status_code == 200:
data = response.json()
return data
else:
print(f"請(qǐng)求失敗,狀態(tài)碼: {response.status_code}")
return None
# 調(diào)用函數(shù)獲取數(shù)據(jù)
data = get_data_from_rest_server()
if data is not None:
print(data)
注解如下?:
在上述代碼中,我們通過(guò)創(chuàng)建一個(gè)字典對(duì)象來(lái)定義請(qǐng)求頭,其中包含了一個(gè)?
Content-Type
?字段和一個(gè)?Authorization
?字段。Content-Type
?字段聲明了請(qǐng)求的內(nèi)容類型為 JSON,而?Authorization
?字段包含了基本的身份驗(yàn)證值。然后,我們將這個(gè)字典對(duì)象傳遞給?requests.get
?方法的?headers
?參數(shù),從而將請(qǐng)求頭添加到請(qǐng)求中。?
?通過(guò)和文心一言AI大模型的三次對(duì)話,我們大致了解了用python 的?requests
?庫(kù)從 REST 服務(wù)器獲取數(shù)據(jù)的基本方法。
二、核查華為分布式塊存儲(chǔ)REST接口規(guī)范
1、RESTful API的請(qǐng)求必須包括如下消息頭
2、擬測(cè)試請(qǐng)求接口官方樣例
三、代碼實(shí)寫
#!/usr/bin/python3
#coding=utf-8
##__author__='daijianbing'
import requests
import json
def authenticate(username, password,url_auth):
# 構(gòu)建認(rèn)證數(shù)據(jù)
auth_data = {
'user_name': username,
'password': password
}
# 將認(rèn)證數(shù)據(jù)轉(zhuǎn)換為JSON格式
auth_json = json.dumps(auth_data)
#禁止未經(jīng)驗(yàn)證的HTTPS
requests.packages.urllib3.disable_warnings()
# 發(fā)送POST請(qǐng)求到REST API進(jìn)行身份驗(yàn)證
response = requests.post(url_auth,verify = False, data=auth_json, headers={'Content-Type': 'application/json'})
# 檢查響應(yīng)狀態(tài)碼,如果成功則返回認(rèn)證令牌,否則拋出異常
if response.status_code == 200:
#print(response.json())
return response.json()['data']['x_auth_token']
else:
connect = 0
raise Exception('Authentication failed')
def queryStoragePool(token,url):
# 構(gòu)建認(rèn)證數(shù)據(jù)
headers = {
'Connection': 'keep-alive',
'X-Auth-Token': token
}
#print(headers)
# 發(fā)送請(qǐng)求到REST API
response = requests.get(url, verify = False, headers=headers)
# 檢查響應(yīng)狀態(tài)碼,如果成功則返回認(rèn)證令牌,否則拋出異常
if response.status_code == 200:
#print(response.json())
return response.json()['storagePools']
else:
raise Exception('Authentication failed')
def queryPoolstatus(token,url,poolId):
# 構(gòu)建認(rèn)證數(shù)據(jù)
headers = {
'Connection': 'keep-alive',
'X-Auth-Token': token
}
params = {
'poolId':str(poolId),
'vbs': 'true'
}
params_json = json.dumps(params)
#print("url:",url,"headers:",headers,"params_json:",params_json)
# 發(fā)送T請(qǐng)求到REST API
response = requests.get(url, verify = False, params=params, headers=headers)
# 檢查響應(yīng)狀態(tài)碼,如果成功則返回認(rèn)證令牌,否則拋出異常
if response.status_code == 200:
#print(response.json())
return response.json()['status']
else:
raise Exception('Authentication failed')
def queryAlarms(token,url):
# 構(gòu)建認(rèn)證數(shù)據(jù)
headers = {
'Connection': 'keep-alive',
'X-Auth-Token': token
}
params = {
'filter':"alarmStatus::1",
}
params_json = json.dumps(params)
# 發(fā)送請(qǐng)求到REST API
response = requests.get(url, verify = False, params=params, headers=headers)
# 檢查響應(yīng)狀態(tài)碼,如果成功則返回認(rèn)證令牌,否則拋出異常
if response.status_code == 200:
#print(response.json())
return response.json()['data']
else:
raise Exception('Authentication failed')
# 使用示例
username = 'zabbix'
password = 'passwd'
hostip = '192.168.0.1'
port = '8088'
hostport = "https://"+hostip+":"+port
url_auth = hostport+'/api/v2/aa/sessions'
checkstatus = 1
requests.packages.urllib3.disable_warnings()
try:
token = authenticate(username, password, url_auth)
print('x_auth_token:', token)
url_pool = hostport+'/dsware/service/resource/queryStoragePool'
pools = queryStoragePool(token,url_pool)
url_poolstatus=hostport+'/dsware/service/cluster/storagepool/queryStatus'
for pool in pools:
poolstatus=queryPoolstatus(token,url_poolstatus,pool['poolId'])
url_alarms = hostport+'/api/v2/common/alarm_count'
Alarms=queryAlarms(token,url_alarms)
print('poolid:',pool['poolId'],'poolname:',pool['poolName'],'poolstatus:',poolstatus,'alarmcount:',Alarms['count'])
except:
checkstatus = 0
finally:
print("checkstatus:",checkstatus)
print("chech over")
四、驗(yàn)證運(yùn)行
實(shí)際運(yùn)行:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-774466.html
# python3 --version
Python 3.9.9
# python3 healthck.py
x_auth_token: MzMwMDE0OTkyNkEzMDAxNGUwOTcwMzE2
poolid: 0 poolname: Pool01 poolstatus: 0 alarmcount: 0
checkstatus: 1
chech over
本段代碼實(shí)現(xiàn)了存儲(chǔ)REST接口認(rèn)證登錄,查詢?nèi)康膒ool并列出poolid,poolname,pool狀態(tài),輸出當(dāng)前未恢復(fù)告警數(shù)并返回本次的檢查狀態(tài)(1為檢查成功)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-774466.html
到了這里,關(guān)于基于文心一言AI大模型,編寫一段python3程序以獲取華為分布式塊存儲(chǔ)REST接口的實(shí)時(shí)數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!