【问题标题】:Import dashboard in superset through api通过api在超集中导入仪表板
【发布时间】:2021-06-15 09:59:14
【问题描述】:

我正在尝试通过 API 导入 Superset 仪表板,但目前尚未成功。 我正在关注 Superset API 文档以使用端点导入

/api/v1/dashboard/导入

我的导入载荷如下:

POST /api/v1/dashboard/import/ HTTP/1.1
Host: localhost:8088
Authorization: Bearer <access token>
Content-Length: 289
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="formData"; filename="20210615_065115.json"
Content-Type: application/json

(data)
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="overwrite"

True
----WebKitFormBoundary7MA4YWxkTrZu0gW

我收到状态为 200 的响应,但仪表板未导入,并且在邮递员的预览响应中得到如下图所示的输出:

有人可以帮忙解决这个问题吗?

谢谢。

【问题讨论】:

    标签: apache-superset


    【解决方案1】:

    Superset 文档对此不是很清楚,但我终于设法解决了这个问题。

    如您所见,您的回复将您重定向到登录页面。 你需要做的是首先向/api/v1/security/csrf_token/发出GET请求

    并将您的请求中的标头添加到/api/v1/dashboard/import

    'X-CSRFToken': csrf_token

    文档中另一件不正确的事情是Content-type 不是multipart/form-data;,而是text/html; charset=utf-8

    所以基本上在你的通话中你不需要在标题中传递Content-type

    Python 示例:

    import requests
    
    headers = {
        'accept': 'application/json', 
        'Authorization': f'Bearer {jwt_token}', 
        'X-CSRFToken': csrf_token
    }
    files = { 
        'formData': (
            dashboard_path, 
            open(dashboard_path, 'rb'), 
            'application/json'
        )
    }
    
    response = self.session.get(url, files=files, headers=headers)
    

    编辑 30.08.2021

    我注意到,由于某种原因,当我在生产环境中使用 AUTH_TYPE = AUTH_OAUTH 运行 Superset 时,上述解决方案停止工作。

    它需要另外标头Referer 包含在标头中,因此更安全的选择是

    
    import requests
    
    headers = {
        'accept': 'application/json', 
        'Authorization': f'Bearer {jwt_token}', 
        'X-CSRFToken': csrf_token,
        'Referer': url
    }
    files = { 
        'formData': (
            dashboard_path, 
            open(dashboard_path, 'rb'), 
            'application/json'
        )
    }
    
    response = self.session.get(url, files=files, headers=headers)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-23
      • 2019-11-14
      • 1970-01-01
      • 1970-01-01
      • 2019-06-10
      • 1970-01-01
      • 2019-05-28
      • 1970-01-01
      相关资源
      最近更新 更多