ChatViewer
  1. 分类
ChatViewer
  • 用户
    • 用户接口
    • 发送验证码
      GET
    • 用户登录
      POST
    • 用户注册
      POST
    • 用户修改信息
      PUT
    • 用户信息
      GET
  • 分类
    • 分类目录接口
    • 查询分类目录
      GET
    • 删除分类
      DELETE
    • 插入分类路径
      POST
    • 插入子分类
      POST
  • ChatGPT
    • GPT会话列表
      GET
    • 新建会话
      POST
    • 删除会话
      DELETE
    • 消息记录
      GET
    • 发送消息
      POST
  • 文章
    • 文章详情查询
      GET
    • 文章分页查询
      GET
    • 上传文件
      POST
    • 上传文章
      POST
  • 点赞
    • 点赞/取消点赞
      POST
    • 点赞状态查询
      GET
  • 评论
    • 评论查询
      GET
    • 添加评论
      POST
  • 聊天
    • 会话查询
    • 聊天记录
    • 发送消息
    • 设置已读
  • 通知
    • 通知
    • 通知摘要
    • 通知查询
    • 设为已读
  • 问题
    • 问题分页查询
    • 添加问题
    • 问题查询
    • 回答查询
    • 保存回答
    • 求助GPT
  • 购买token
    • 添加商品
    • 秒杀免费商品
  1. 分类

查询分类目录

GET
/category/allCategory
值得看看实现
由于目录是查询较多、改动较少的数据。每次查询时重新组织目录树结构会带来不必要的时间消耗,故使用Cache Aside机制,将目录树结构存储至Redis。
先从缓存中读取数据,如果没有就再去数据库里面读数据,然后把数据放回缓存中,如果缓存中可以找到数据就直接返回数据;更新数据的时候先把数据持久化到数据库,然后再让缓存失效。
可以考虑的问题:
Cache Aside的安全性;热点数据的过期
100个线程循环10次,JMeter测试结果如下,可以看出使用Redis缓存数据的性能要远优于重复使用MySQL查询与组织数据。
image.png
生成目录树,通过parentID找到该节点的所有子节点,再递归找到子节点的所有子节点:

请求参数

无

示例代码

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
请求示例请求示例
Shell
JavaScript
Java
Swift
curl --location --request GET '/category/allCategory'

返回响应

🟢200成功
application/json
Body
code
integer 
响应码
必需
msg
string 
响应状态
必需
data
array [object {3}] 
数据
必需
一级目录列表
value
string 
分类ID
必需
label
string 
分类名
必需
children
array [object {3}] 
子分类
必需
示例
{
    "code": 200,
    "msg": "success",
    "data": [
        {
            "value": "1688872497937289217",
            "label": "算法",
            "children": [
                {
                    "value": "1688872498683875329",
                    "label": "树",
                    "children": []
                },
                {
                    "value": "1688872592334295041",
                    "label": "链表",
                    "children": []
                },
                {
                    "value": "1688872622424231938",
                    "label": "栈和队列",
                    "children": []
                },
                {
                    "value": "1688872651511730177",
                    "label": "字符串",
                    "children": []
                },
                {
                    "value": "1688872678049091586",
                    "label": "数组",
                    "children": []
                },
                {
                    "value": "1688872705106546690",
                    "label": "动态规划",
                    "children": []
                },
                {
                    "value": "1688872746038759425",
                    "label": "回溯",
                    "children": []
                },
                {
                    "value": "1688872773482090497",
                    "label": "其他",
                    "children": []
                }
            ]
        },
        {
            "value": "1688872842130264065",
            "label": "数据库",
            "children": [
                {
                    "value": "1688872842818129922",
                    "label": "MySQL",
                    "children": []
                },
                {
                    "value": "1688872887932063746",
                    "label": "Redis",
                    "children": []
                },
                {
                    "value": "1688872936032342018",
                    "label": "ElasticSearch",
                    "children": []
                }
            ]
        },
        {
            "value": "1688873233597239298",
            "label": "Java",
            "children": [
                {
                    "value": "1688873234268327938",
                    "label": "Java基础",
                    "children": []
                },
                {
                    "value": "1688873262043009025",
                    "label": "多线程",
                    "children": []
                },
                {
                    "value": "1688873283979218945",
                    "label": "设计模式",
                    "children": []
                }
            ]
        },
        {
            "value": "1688873487067418626",
            "label": "操作系统",
            "children": []
        },
        {
            "value": "1688873517996216322",
            "label": "计算机网络",
            "children": []
        },
        {
            "value": "1688873707801055233",
            "label": "中间件",
            "children": [
                {
                    "value": "1688873708618944514",
                    "label": "kafka",
                    "children": []
                }
            ]
        },
        {
            "value": "1688874234358173697",
            "label": "Spring框架",
            "children": []
        },
        {
            "value": "1688874327190704130",
            "label": "本站开发",
            "children": []
        }
    ]
}
修改于 2023-10-04 13:31:50
上一页
分类目录接口
下一页
删除分类
Built with