当前位置: 首页 > news >正文

AI书签管理工具开发全记录(十六):Sun-Panel接口分析

文章目录

  • AI书签管理工具开发全记录(十六):Sun-Panel接口分析
    • 1.前言 📝
    • 2.sun-panel介绍
    • 2.接口分析
      • 2.1 登录接口
      • 2.2 请求header
      • 2.3 分组列表接口
      • 2.4 查询分组下全部书签列表
      • 2.5 创建分组
      • 2.6 创建书签
    • 3.接口快速验证

AI书签管理工具开发全记录(十六):Sun-Panel接口分析

1.前言 📝

在上一篇文章中,我们完成了TUI功能的开发。本文我们将聚焦于sun-panel的接口分析,为后续和sun-panel数据同步做准备。

2.sun-panel介绍

image.png
sun-panel是一个流行的导航面板,支持sun-panel同步无疑会方便许多。

2.接口分析

官方提供了openapi文档
image.png

我仔细阅读了文档,发现不是很好能满足我们的需求,例如没有根据分类查询所有书签的功能,也没有根据id查询书签的功能。

所以还是需要F12查看接口实际请求,根据我们实际业务进行调用。
本文所有接口基于1.7.0版本,后续版本请以实际为准。

2.1 登录接口

  • url: /api/login
  • method:post

请求参数

{"username": "xxxx","password": "xxxx"
}

返回参数

{"code": 0,"data": {"ID": 0,"CreatedAt": "0001-01-01T00:00:00Z","UpdatedAt": "0001-01-01T00:00:00Z","DeletedAt": null,"id": 1,"createTime": "2024-03-16T06:04:58.211959305Z","updateTime": "2024-03-16T06:06:58.439132022Z","username": "admin","password": "","name": "zhyj","headImage": "","status": 1,"role": 1,"mail": "admin@sun.cc","referralCode": "","token": "675f688d-1a13-4429-84fe-92d9942636b0-144bbb22a486ad1af8e37ff437daf68b","userId": 0},"msg": "OK"
}

其中token字段就是我们需要的

2.2 请求header

image.png

拿到header之后,后续需要请求的接口需要携带上token。

需要拼接header

header = {
"Authorization": "Bearer "+token
}

2.3 分组列表接口

  • url: /api/panel/itemIconGroup/getList
  • method:post

请求参数

响应参数

{"code": 0,"data": {"count": 0,"list": [{"id": 6,"icon": "","title": "dev","onlyName": "dev","description": "","sort": 9999,"userId": 1,"publicVisitHide": false,"user": {"ID": 0,"CreatedAt": "0001-01-01T00:00:00Z","UpdatedAt": "0001-01-01T00:00:00Z","DeletedAt": null,"id": 0,"createTime": "0001-01-01T00:00:00Z","updateTime": "0001-01-01T00:00:00Z","username": "","password": "","name": "","headImage": "","status": 0,"role": 0,"mail": "","referralCode": "","token": "","userId": 0},"cardStyle": {"style": 0,"textColor": "#ffffff","textInfoHideDescription": false,"textIconHideTitle": false}}]},"msg": "OK"
}

2.4 查询分组下全部书签列表

  • url: /api/panel/itemIcon/getListByGroupId
  • method:post

请求参数

{"itemIconGroupId": 6
}

返回参数

{"code": 0,"data": {"count": 0,"list": [{"ID": 0,"CreatedAt": "0001-01-01T00:00:00Z","UpdatedAt": "0001-01-01T00:00:00Z","DeletedAt": null,"id": 19,"createTime": "0001-01-01T00:00:00Z","updateTime": "0001-01-01T00:00:00Z","cardType": 1,"icon": {"itemType": 2,"src": "https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg","text": "https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg","backgroundColor": "#2a2a2a6b"},"title": "antv文档","onlyName": "","url": "http://192.168.31.93:8987/","lanUrl": "http://192.168.31.93:8987/","description": "","openMethod": 2,"sort": 9999,"backgroundColor": "#2a2a2a6b","itemIconGroupId": 6,"expandParam": {},"userId": 1}]},"msg": "OK"
}

2.5 创建分组

  • url: /api/panel/itemIconGroup/edit
  • method:post

请求参数

{"title": "test","cardStyle": {"style": 0,"textColor": "#ffffff","textInfoHideDescription": false,"textIconHideTitle": false}
}

响应参数

保留转义
{"code": 0,"data": {"ID": 0,"CreatedAt": "0001-01-01T00:00:00Z","UpdatedAt": "0001-01-01T00:00:00Z","DeletedAt": null,"id": 9,"createTime": "2025-06-08T08:21:03.32422806Z","updateTime": "2025-06-08T08:21:03.32422806Z","icon": "","title": "test","onlyName": "","description": "","sort": 9999,"publicVisitHide": 0,"userId": 1,"user": {"ID": 0,"CreatedAt": "0001-01-01T00:00:00Z","UpdatedAt": "0001-01-01T00:00:00Z","DeletedAt": null,"id": 0,"createTime": "0001-01-01T00:00:00Z","updateTime": "0001-01-01T00:00:00Z","username": "","password": "","name": "","headImage": "","status": 0,"role": 0,"mail": "","referralCode": "","token": "","userId": 0},"cardStyle": "{\"style\":0,\"textColor\":\"#ffffff\",\"textInfoHideDescription\":false,\"textIconHideTitle\":false}"},"msg": "OK"
}

返回的id参数即为新的分组id

2.6 创建书签

  • url: /api/panel/itemIcon/edit
  • method:post

请求参数

{"icon": {"itemType": 1,"backgroundColor": "#2a2a2a6b"},"title": "百度","url": "http://www.baidu.com","lanUrl": "http://www.baidu.com","description": "百度","openMethod": 2,"cardType": 1,"itemIconGroupId": 9,"backgroundColor": "#2a2a2a6b","expandParam": {}
}

返回参数

{"code": 0,"data": {"ID": 0,"CreatedAt": "0001-01-01T00:00:00Z","UpdatedAt": "0001-01-01T00:00:00Z","DeletedAt": null,"id": 23,"createTime": "2025-06-08T08:27:28.252415057Z","updateTime": "2025-06-08T08:27:28.252415057Z","cardType": 1,"icon": {"itemType": 1,"src": "","text": "","backgroundColor": "#2a2a2a6b"},"title": "百度","onlyName": "","url": "http://www.baidu.com","lanUrl": "http://www.baidu.com","description": "百度","openMethod": 2,"sort": 9999,"backgroundColor": "#2a2a2a6b","itemIconGroupId": 9,"expandParam": "{}","userId": 1,"user": {"ID": 0,"CreatedAt": "0001-01-01T00:00:00Z","UpdatedAt": "0001-01-01T00:00:00Z","DeletedAt": null,"id": 0,"createTime": "0001-01-01T00:00:00Z","updateTime": "0001-01-01T00:00:00Z","username": "","password": "","name": "","headImage": "","status": 0,"role": 0,"mail": "","referralCode": "","token": "","userId": 0}},"msg": "OK"
}

3.接口快速验证

我们使用python,进行接口快速验证

import requests
import json  def login(url,username, password):"""登录:param username: 用户名:param password: 密码:return: token"""url = url + "/api/login"data = {"username": username,"password": password}response = requests.post(url, json=data)return response.json()class SunPanelApi:def __init__(self, token, url):self.token = tokenself.url = urlself.headers = {"Authorization": "Bearer "+token,"Token": token,"Content-Type": "application/json"}def get_group_list(self):"""获取群组列表:return:"""url = self.url + "/api/panel/itemIconGroup/getList"logging.info(f"请求URL: {url}")logging.info(f"请求头: {self.headers}")# 无需参数response = requests.post(url, headers=self.headers)return response.json()def get_list_by_group_id(self, group_id):"""获取群组下的列表:param group_id: 群组ID:return:"""url = self.url + "/api/panel/itemIcon/getListByGroupId"data = {"itemIconGroupId": group_id}response = requests.post(url, headers=self.headers, json=data)return response.json()def create_group(self, group_name):"""创建群组:param group_name: 群组名称:return:"""url = self.url + "/api/panel/itemIconGroup/edit"data = {"title": group_name,"cardStyle": {"style": 0,"textColor": "#ffffff","textInfoHideDescription": False,"textIconHideTitle": False}}print(url)print(data)response = requests.post(url, headers=self.headers, json=data)return response.json()def create_bookmark(self, group_id, name, url):"""创建书签:param group_id: 群组ID:param name: 名称:param url: 链接:param icon: 图标:return:"""url = self.url + "/api/panel/itemIcon/edit"data = {"icon": {"itemType": 1,"backgroundColor": "#2a2a2a6b"},"title": name,"url": url,"lanUrl": url,"description": name+",由api创建","openMethod": 2,"cardType": 1,"itemIconGroupId": group_id,"backgroundColor": "#2a2a2a6b","expandParam": {}}response = requests.post(url, headers=self.headers, json=data)return response.json()def print_json(json_data):"""打印JSON数据,使用json.dumps转换为标准JSON字符串(双引号、正确转义),indent=2使输出更易读:param json_data: JSON数据"""print(json.dumps(json_data, ensure_ascii=False, indent=2))

往期系列

  • Ai书签管理工具开发全记录(一):项目总览与技术蓝图
  • Ai书签管理工具开发全记录(二):项目基础框架搭建
  • AI书签管理工具开发全记录(三):配置及数据系统设计
  • AI书签管理工具开发全记录(四):日志系统设计与实现
  • AI书签管理工具开发全记录(五):后端服务搭建与API实现
  • AI书签管理工具开发全记录(六):前端管理基础框框搭建 Vue3+Element Plus
  • AI书签管理工具开发全记录(七):页面编写与接口对接
  • AI书签管理工具开发全记录(八):Ai创建书签功能实现
  • AI书签管理工具开发全记录(九):用户端页面集成与展示
  • AI书签管理工具开发全记录(十):命令行中结合ai高效添加书签
  • AI书签管理工具开发全记录(十一):MCP集成
  • AI书签管理工具开发全记录(十二):MCP集成查询
  • AI书签管理工具开发全记录(十三):TUI基本框架搭建
  • AI书签管理工具开发全记录(十四):TUI基本界面完善
  • AI书签管理工具开发全记录(十五):TUI基本逻辑实现与数据展示

相关文章:

  • WEB3技术重要吗,还是可有可无?
  • xtp+ctp 交易系统接口简介
  • 会计-合并-5- 处置交易在合报与个报会计处理
  • C-Equilateral Triangle
  • ffmpeg(五):裁剪与合并命令
  • NY158NY159美光固态闪存NY160NY161
  • 【推荐算法】Deep Crossing:端到端深度推荐系统的奠基者
  • PLC入门【1】PLC的简单介绍(教学软件:FX-TRN-BEG-C)
  • 2025年6月8日树型动态规划
  • 第一讲 常见的指令, 外壳与权限
  • 北京工作周期7,8,9,10
  • [2025CVPR]确定性图像转换新突破:双逼近器布朗桥模型(Dual-approx Bridge)技术详解
  • 条件语句易错点
  • 【阿里巴巴 x 浙江大学】信息与交互设计 - 信息设计漫谈
  • STM32入门学习之系统时钟配置
  • 【论文阅读】YOLOv8在单目下视多车目标检测中的应用
  • 第12篇:数据库中间件日志设计与追踪系统落地实践
  • 【HarmonyOS5】掌握UIAbility启动模式:Singleton、Specified、Multiton
  • 相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
  • 基于安卓的线上考试APP源码数据库文档
  • 关于开通网站建设的请示/宣传推广计划
  • 做英文网站用什么字体好/网上销售培训课程
  • 企业网站黄页怎么做/搜索引擎优化seo培训
  • 做网站哪家公司比较好而且不贵/苏州seo关键词优化方法
  • 网站分析该怎么做/品牌策划是做什么的
  • 武汉网站建设工作室/宁波网络推广产品服务