Код: Выделить всё
import requests
import json
superset_url = 'http://internal-k8s-devsuper-ingressd-819cadde89-967291555.us-west-2.elb.amazonaws.com'
login_url = f'{superset_url}/api/v1/security/login'
csrf_url = f'{superset_url}/api/v1/security/csrf_token'
api_url = f'{superset_url}/api/v1/role'
#session request
session = requests.Session()
myusername = 'Username'
mypassword = 'Password'
#Payload for login request
payload = {
'username': myusername,
'password': mypassword,
'provider' : 'db',
'refresh': True # Get refresh token along with access token
}
#Headers
headers = {
'Content-Type': 'application/json'
}
#Login
login_res = session.post(login_url, json=payload, headers=headers)
print(f'superset url: {login_res.url}')
#print(f'Login-response: {login_res.text}')
print(login_res.json())
print(f'Login-response: {login_res.text}')
access_token = login_res.json().get("access_token")
headers.update(
{
'Authorization': f'Bearer {access_token}',
'Referer': login_url
}
)
if login_res.status_code != 200:
print(f'login failed: {login_res.status_code} - {login_res.reason}')
else:
print('login successful!')
#Fetch CSRF token
csrf_response = session.get(csrf_url, headers=headers)
#print(f'csrf_status_code: {csrf_response.status_code}, csrf_reason: {csrf_response.reason}')
#print(f'csrf_text: {csrf_response.text}')
#print(f'redirect_history: {csrf_response.history}')
#print(session.cookies)
csrf_response_json = csrf_response.json()
csrf_token = csrf_response_json.get("result")
#API call with CSRF token
headers.update(
{
'X-CSRFToken': csrf_token,
}
)
#exception block if token not fetched
if not csrf_token:
print('Failed to fetch token')
else:
print('CSRF token fetched successfully!')
response = session.get(api_url, headers=headers, allow_redirects = True)
response.text
try:
data = response.json()
print(f'fetching data: {data}')
except ValueError:
print(f'response is not JSON, printing raw response')
print(response.text)
при использовании api_url = f'{superset_url}/api /v1/chart'
Но при использовании
Код: Выделить всё
api_url = f'{superset_url}/api/v1/role'
Почему это так? Использую ли я правильную версию или эта версия (версия 4.0.1) совместима только для получения доступа к диаграммам, наборам данных, информационной панели, а не к информации о пользователе или роли.
Я' m администратор, у меня есть все разрешения в надмножестве и включен
Код: Выделить всё
FAB_ADD_SECURITY_API = True
Подробнее здесь: https://stackoverflow.com/questions/791 ... -in-python