功能分析临时参考

news2024/12/23 10:45:17
  1. App 组件中注释 Menu, 去除顶部菜单

MenuWrapper
在这里插入图片描述
SubMenuComponent
在这里插入图片描述

  1. 请求/chart/add ,直接展示绘图页
    此过程,浏览器只加载静态资源,没有api的数据请求。
    取消登录限制:
    api: GET, POST /chart/add
    view: SliceModelView.add
    源码:superset/views/chart/view.py
    取消登录: 注释has_access 登录要求

  2. 选数据集,触发api请求
    api: GET- /api/v1/dataset/
    查询参数:‘q’ = “(columns:!(id,table_name,description,datasource_type),filters:!((col:table_name,opr:ct,value:‘’)),order_column:table_name,order_direction:asc,page:0,page_size:100)”
    view: DatasetRestApi.get_list
    源码:superset/datasets/api.py
    取消登录
    flask_appbuilder/api/_init_.py 搜索get_list
    注释@protect
    显示固定的测试用例数据
    slice: 存储创建的图表
    tables:存储用户的数据集(表名等)
    flask_appbuilder/api/_init_.py

# get_list_headless
if count == 0:
    response["result"] = [{'description': None, 'datasource_type': 'table', 'id': 1, 'table_name': 'line_t'}]
    response["ids"] = [1]
    response["count"] = 1

将测试用例数据存储的表信息存入tables


//未登录的 查询数据集
{
'list_title': 'List Sqla Table', 
'list_columns': ['id', 'table_name', 'description', 'datasource_type'], 
'description_columns': {}, 
'label_columns': {'id': 'Id', 'description': 'Description', 'table_name': 'Table Name', 'datasource_type': 'Datasource Type'}, 
'order_columns': ['table_name'], 
'result': [], 
'ids': [], 
'count': 0
}

//登录后的查询数据集
 {
'list_title': 'List Sqla Table', 
'list_columns': ['id', 'table_name', 'description', 'datasource_type'], 
'description_columns': {}, 
'label_columns': {'id': 'Id', 'description': 'Description', 'table_name': 'Table Name', 'datasource_type': 'Datasource Type'}, 
'order_columns': ['table_name'],
//差异部分
'result': [{'description': None, 'datasource_type': 'table', 'id': 1, 'table_name': 'line_t'}], 
'ids': [1], 
'count': 1}

登录后的查询过程:

joined_filters: FILTERS:tables.table_name:
tables.id:<function DatasetRestApi.<lambda> at 0x000002011A3653A0>

order_column: table_name
order_direction: asc
self.list_select_columns: ['id', 'database.id', 'database.database_name', 'changed_by_name', 'changed_by_url', 'changed_by.first_name', 'changed_by
.username', 'changed_on_utc', 'changed_on_delta_humanized', 'default_endpoint', 'description', 'datasource_type', 'explore_url', 'extra', 'kind', '
owners.id', 'owners.username', 'owners.first_name', 'owners.last_name', 'schema', 'sql', 'table_name', 'changed_on', 'changed_by_fk']
self.list_outer_default_load: True
查询self.obj: <class 'superset.connectors.sqla.models.SqlaTable'>
query: SELECT tables.uuid AS tables_uuid, tables.created_on AS tables_created_on, tables.changed_on AS tables_changed_on, tables.id AS tables_id, t
ables.description AS tables_description, tables.default_endpoint AS tables_default_endpoint, tables.is_featured AS tables_is_featured, tables.filte
r_select_enabled AS tables_filter_select_enabled, tables.offset AS tables_offset, tables.cache_timeout AS tables_cache_timeout, tables.params AS ta
bles_params, tables.perm AS tables_perm, tables.schema_perm AS tables_schema_perm, tables.is_managed_externally AS tables_is_managed_externally, ta
bles.external_url AS tables_external_url, tables.table_name AS tables_table_name, tables.main_dttm_col AS tables_main_dttm_col, tables.database_id
AS tables_database_id, tables.fetch_values_predicate AS tables_fetch_values_predicate, tables.`schema` AS tables_schema, tables.`sql` AS tables_sql
, tables.is_sqllab_view AS tables_is_sqllab_view, tables.template_params AS tables_template_params, tables.extra AS tables_extra, tables.created_by
_fk AS tables_created_by_fk, tables.changed_by_fk AS tables_changed_by_fk
FROM tables

//
query_results: [(superset.line_t, examples, admin user)]
count, result: 1 [superset.line_t]

未登录的查询过程:

joined_filters: FILTERS:tables.table_name:
tables.id:<function DatasetRestApi.<lambda> at 0x000001940DC79280>

order_column: table_name
order_direction: asc
self.list_select_columns: ['id', 'database.id', 'database.database_name', 'changed_by_name', 'changed_by_url', 'changed_by.first_name', 'changed_by
.username', 'changed_on_utc', 'changed_on_delta_humanized', 'default_endpoint', 'description', 'datasource_type', 'explore_url', 'extra', 'kind', '
owners.id', 'owners.username', 'owners.first_name', 'owners.last_name', 'schema', 'sql', 'table_name', 'changed_on', 'changed_by_fk']
self.list_outer_default_load: True
查询self.obj: <class 'superset.connectors.sqla.models.SqlaTable'>
query: SELECT tables.uuid AS tables_uuid, tables.created_on AS tables_created_on, tables.changed_on AS tables_changed_on, tables.id AS tables_id, t
ables.description AS tables_description, tables.default_endpoint AS tables_default_endpoint, tables.is_featured AS tables_is_featured, tables.filte
r_select_enabled AS tables_filter_select_enabled, tables.offset AS tables_offset, tables.cache_timeout AS tables_cache_timeout, tables.params AS ta
bles_params, tables.perm AS tables_perm, tables.schema_perm AS tables_schema_perm, tables.is_managed_externally AS tables_is_managed_externally, ta
bles.external_url AS tables_external_url, tables.table_name AS tables_table_name, tables.main_dttm_col AS tables_main_dttm_col, tables.database_id
AS tables_database_id, tables.fetch_values_predicate AS tables_fetch_values_predicate, tables.`schema` AS tables_schema, tables.`sql` AS tables_sql
, tables.is_sqllab_view AS tables_is_sqllab_view, tables.template_params AS tables_template_params, tables.extra AS tables_extra, tables.created_by
_fk AS tables_created_by_fk, tables.changed_by_fk AS tables_changed_by_fk
FROM tables
query_results: []
count, result: 0 []
pks: []

tables中的uuid不可编辑:
在这里插入图片描述

继续: 选择图形后,点击添加图表,发送get
 

  • GET-/api/v1/explore/
    查询参数:(‘viz_type’, ‘echarts_timeseries_line’), (‘datasource_id’, ‘1’), (‘datasource_type’, ‘table’)]
     
  • GET-/api/v1/database/1/table_extra/line_t/superset/

POST-/api/v1/explore/form_data-ImmutableMultiDict([(‘tab_id’, ‘5’)])

 
4. 登录功能分析
后端加一个钩子函数,查看请求交互!

# 处理请求之前
@app.before_request
def analyze():
	xxxx
	return None

/api/v1/me/ 验证用户的登录
未登录返401,前端重定向到/login/
已登录,返回用户信息
在这里插入图片描述

去除登录功能:

接口:GET /api/v1/me/
视图:

  1. 获取flask app所有的接口
  • flask routes 获取接口
  • 根据api接口查找视图
  • 搜索视图源码位置
在这里插入代码片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/450478.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch:了解和解决文档更新后 Elasticsearch 分数的变化

问题 问卷中有如下这样的文档&#xff0c;开发者想通过 match query 搜索这些文档来使用分数。 POST sample-index-test/_doc/1 {"first_name": "James","last_name" : "Osaka" } 以下是对上述文档的示例查询&#xff1a; GET sam…

阿里6面,成功唬住面试官拿了26K,突然感觉软件测试面试貌似不太难...

一次闲聊&#xff0c;一个在阿里上班的朋友突然说起他在阿里的面试经历。 朋友说&#xff0c;阿里的面试挺独特&#xff0c;每轮面试都没有 HR 约时间&#xff0c;一般是晚上 8 点左右面试官来一个电话&#xff0c;问是否能面试&#xff0c;能的话开始面&#xff0c;不能就约一…

【MYSQL】索引与事务(超详细)

文章目录 &#x1f337; 1.索引⭐️ 1.1 定义⭐️ 1.2 为什么要用索引⭐️ 1.3 作用⭐️ 1.4 使用场景⭐️ 1.5 使用&#x1f341; 1.5.1 查看索引&#x1f341; 1.5.2 创建索引&#x1f341; 1.5.3 删除索引 ⭐️ 1.6 创建索引的⽅式⭐️ 1.7 选择索引的数据结构&#xff08;面…

MySQL的索引与SQL优化策略

文章目录 存储引擎常见的存储引擎 索引索引结构BTree的优点索引分类索引语法explain执行计划索引的使用原则最左前缀法则范围查询索引列进行运算操作字符串不加引号模糊查询or连接的条件数据分布影响 覆盖索引前缀索引索引的设计原则 SQL优化insert优化主键优化order by优化gro…

途虎养车三闯IPO,如何突破亏损“魔咒”?

近日&#xff0c;汽车后市场的“资本宠儿”途虎养车更新招股书&#xff0c;再次闯关港股IPO。 途虎养车是一家中国线上线下一体化汽车服务平台。2013-2021年&#xff0c;途虎养车共进行16轮融资&#xff0c;融资总额超过90亿元。这是继2022年1月和8月先后两次递表失效后&#…

layui框架实战案例(20):常用条件判断和信息展示技巧(图片预览、动态表格、短信已读未读、链接分享、信息脱敏、内置框架页)

本文档是近期layui的汇总&#xff0c;部分内容可能会重复。 文章目录 前言一、上传图片预览1.HTML代码2.JQ渲染代码 二、动态表格数据返回条件判断1.动态表格返回列状态判断2.cols列数据事件操作3.删除信息4.短信已读未读状态处理5.confirm确认事件6.链接分享7.信息脱敏 三、内…

【分享】解压文件一直显示失败,如何处理?

想要解压压缩文件&#xff0c;却发现一直显示失败&#xff0c;有可能是以下几个原因引起的。 1、原压缩文件在下载或者发送过程中出现漏洞&#xff0c;导致文件数据不完整。 2、压缩文件感染病毒&#xff0c;或者杀毒软件等阻止解压缩操作。 3、源文件在压缩的过程中&#x…

参展第六届中国城市轨道交通智慧运维大会 | 图扑软件

2022&#xff08;第六届&#xff09;中国城市轨道交通智慧运维大会在西安顺利举行。此次大会由现代轨道交通网联合中国机械工程学会设备智能运维分会主办&#xff0c;西安市轨道交通集团有限公司运营分公司、轨道交通工程信息化国家重点实验室(中铁一院)协办。来自行业学会、地…

【vue.js】前端生成随机图片组件

文章目录 前言效果代码 前言 这是一个前端随机生成图片的组件&#xff0c;可以用作滑块验证组件的背景图。 效果 以下效果是结合滑块验证组件一起构建的。 代码 <template><img ref"random-image" /> </template> <script> export defau…

V2.4版本商超标签专用路由器

PICK_Router_V2.4 产品参数 产品型号 PICK_Router_V2.4 尺寸(mm) 21*14*4.3mm 工作温度 -10-70℃ 产品重量 465g 供电方式 DC12V or POE 工作频率 2.4G 通信速率 50-250kbps 通信方式 10/100Mbps有线网络&2.4G 通信半径 30m 支持标签数量 >10000…

ChatGPT其实并不想让开发人员做这5件事情,但却已经被玩坏了

前言 ChatGPT已经火爆了快半年了吧&#xff0c;紧接着国内也开始推出了各种仿制品&#xff0c;我甚至一度怀疑&#xff0c;如果人家没有推出ChatGPT&#xff0c;这些仿制品会不会出现。而很多人也嗨皮得不行&#xff0c;利用各种方法开始科学上网&#xff0c;用ChatGPT做各种觉…

PostMan笔记(四)Mock服务与API文档管理

1. Mock服务 1.1 为什么使用Mock服务 Postman的Mock服务是一种API模拟工具&#xff0c;可以用于模拟API的行为并返回虚拟的响应。它可以帮助开发人员在实际API实现之前测试和验证API设计&#xff0c;以及在客户端应用程序开发过程中进行测试和调试。 使用Postman的Mock服务可…

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈(Feign、Gateway)

http客户端Feign &#xff08;一&#xff09;基于Feign远程调用 1、RestTemplate方式调用存在的问题 2、Feign的介绍 3、定义和使用Feign客户端 这个接口里面将来的封装的就是所有对userservice发起的远程调用 1、orderserivce的pom <!--feign客户端依赖--> <depe…

花生壳内网穿透步骤详解,感兴趣的小伙伴可以自己去尝试哦~

花生壳是什么&#xff1f; 花生壳是款具备内网穿透功能的软件。是通过云服务器快速与内网服务器建立连接&#xff0c;同时把内网端口映射到云端&#xff0c;实现各类基于域名的互联网应用服务。花生壳能够实现反向代理应用&#xff0c;支持TCP、HTTP、HTTPS协议&#xff0c;端…

数据结构基础day3

题目&#xff1a;119. 杨辉三角II 我的解法&#xff1a;先将杨辉三角存储起来&#xff0c;取出第rowIndex行 class Solution { public:vector<int> getRow(int rowIndex) {vector<vector<int>> ans(rowIndex1); //初始化rowIndex1行的杨辉三角for(int i0; …

贾其萃 : 笃行实践 筑梦扬帆 | 提升之路系列(二)

导读 为了发挥清华大学多学科优势&#xff0c;搭建跨学科交叉融合平台&#xff0c;创新跨学科交叉培养模式&#xff0c;培养具有大数据思维和应用创新的“π”型人才&#xff0c;由清华大学研究生院、清华大学大数据研究中心及相关院系共同设计组织的“清华大学大数据能力提升项…

如何开发一款用户体验优秀的语音交友app?

在数字时代&#xff0c;人们越来越依赖智能手机上的应用程序来与他人进行交流。其中&#xff0c;语音交友app成为了最受欢迎的应用之一。然而&#xff0c;开发一款成功的语音交友app需要深入了解用户需求与体验。本文将探讨如何开发一款用户体验优秀的语音交友app。 着眼于用户…

微信小程序uniapp基于Android的大学生社交论坛交流app系统

实现一个基于Android的社交APP小程序,一共3个身份&#xff0c;包括老师、学生和管理员&#xff0c;其中老师和学生在手机端注册登录&#xff0c;管理员在web端后台登录。学生和老师登录后可以查询通知新闻信息&#xff0c;收藏信息&#xff0c;查看好友推荐&#xff0c;论坛发帖…

短视频app开发:如何实现实时短视频录制功能

简介 在当今的移动互联网时代&#xff0c;短视频app已经成为了人们生活中不可或缺的一部分。短视频app的数量和用户量都在不断增加。如今&#xff0c;越来越多的人开始关注短视频app的开发&#xff0c;尤其是如何实现实时短视频录制功能。本文将分享如何开发短视频app并实现实…

【TS】1660- 4 个 TypeScript 5.1 Beta 版重要更新内容

TypeScript 5.1 在 5.0 发布后不久就发布了测试版&#xff0c;但测试版不代表最终正式版。 官方原文 Announcing TypeScript 5.1 Beta(https://devblogs.microsoft.com/typescript/announcing-typescript-5-1-beta/) 中提供了完整的更新内容&#xff0c;以下是我梳理了 4 个 T…