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

山东大学软件学院项目实训-个人博客(3)

前后端传输数据DTO搭建任务(续)

根据会议讨论确定的基础CRUD部分的Restful API设计方案,我将任务分为以下三个子任务:

  • 整理schemas层具体设计表
  • 整理路由路径-DTO映射表
  • 完成DTO数据结构代码

继上次完成schemas层具体设计表任务后,我又陆续完成了后两个子任务,成果如下:

文章目录

  • 前后端传输数据DTO搭建任务(续)
    • 一、路由路径-DTO映射表
        • 1. 用户模块 (User)
        • 2. 文件模块 (File)
        • 3. 文件类型模块 (File Type)
        • 4. 分析模块 (Analysis)
        • 5. 项目模块 (Project)
        • 6. 服务模块 (Service)
        • 7. 空间转录组模块 (Spatial) & 8. 可视化模块 (Visualization)
    • 二、DTO数据结构代码
    • 三、个人感悟

一、路由路径-DTO映射表

1. 用户模块 (User)
接口路径方法功能请求 DTO响应 DTO
/api/user/registerPOST用户注册UserRegisterRequestUserRegisterResponse
/api/user/loginPOST用户登录UserLoginRequestUserLoginResponse
/api/user/infoGET获取当前用户信息-UserInfoResponse
/api/user/profilePUT更新用户基础信息UserProfileUpdateRequestUserInfoResponse
/api/user/passwordPUT修改密码UserPasswordChangeRequestApiResponse(通用)
2. 文件模块 (File)
接口路径方法功能请求 DTO响应 DTO
/api/file/uploadPOST上传文件FileUploadRequestFileUploadResponse
/api/file/listGET获取文件列表-FileListResponse
/api/file/{file_id}GET获取文件详情FileIdPath(路径参数)FileDetailResponse
/api/file/{file_id}PUT更新文件信息FileUpdateRequestFileUpdateResponse
/api/file/{file_id}DELETE删除文件FileIdPathFileDeleteResponse
/api/file/{file_id}/childrenDELETE递归删除子文件FileIdPathApiResponse(通用)
/api/file/download/{file_id}GET下载文件FileIdPath二进制流
/api/file/preview/{file_id}GET预览文件FileIdPath二进制流
3. 文件类型模块 (File Type)
接口路径方法功能请求 DTO响应 DTO
/api/file-typesGET列出文件类型-FileTypeListResponse
/api/file-typesPOST创建文件类型FileTypeCreateRequestFileTypeResponse
/api/file-types/{file_type_id}PUT更新文件类型FileTypeUpdateRequestFileTypeResponse
/api/file-types/{file_type_id}DELETE删除文件类型-ApiResponse(通用)
4. 分析模块 (Analysis)
接口路径方法功能请求 DTO响应 DTO
/api/analysis/project/{projectId}/treeGET获取项目分析流程树-ProjectAnalysisTreeResponse
/api/analysis/execution/{executionId}GET获取执行记录详情-ExecutionDetailsResponse
/api/analysis/execution/{executionId}/statusPUT更新执行记录状态UpdateAlgorithmStatusRequestUpdateAlgorithmStatusResponse
/api/analysis/execution/{executionId}DELETE删除执行记录-ExecutionDeleteResponse
/api/analysis/analyzePOST分析文件-FileAnalysisTreeResponse
5. 项目模块 (Project)
接口路径方法功能请求 DTO响应 DTO
/api/project/POST创建项目ProjectCreateRequestProjectResponse
/api/project/listGET获取项目列表-ProjectListResponse
/api/project/{project_id}/files-relationsGET获取文件关系-ProjectAnalysisTreeResponse
/api/project/{project_id}/filesGET获取项目文件列表-FileListResponse
/api/project/{project_id}GET获取项目详情-ProjectResponse
/api/project/{project_id}/detailGET获取项目详细信息(简版)-ProjectResponse
/api/project/{project_id}PUT更新项目信息ProjectUpdateRequestProjectResponse
/api/project/{project_id}DELETE删除项目-ApiResponse(通用)
/api/project/{project_id}/filePOST向项目添加文件AddFileToProjectRequestProjectResponse
/api/project/{project_id}/file/{file_id}DELETE从项目移除文件-ProjectResponse
/api/project/{project_id}/service-configPUT更新服务配置ProjectServiceConfigRequestProjectResponse
6. 服务模块 (Service)
接口路径方法功能请求 DTO响应 DTO
/api/service/POST创建 ServiceServiceCreateRequestServiceResponse
/api/service/listGET获取 Service 列表-ServiceListResponse
/api/service/{service_id}PUT更新 ServiceServiceUpdateRequestServiceResponse
/api/service/{service_id}DELETE删除 Service-ApiResponse(通用)
/api/service/{service_id}GET获取 Service 信息-ServiceResponse
/api/service/queue/statusGET获取队列状态-ApiResponse(通用)
/api/service/{service_id}/executePOST执行 ServiceServiceExecuteRequestServiceExecuteResponse
/api/service/executions/{execution_id}GET获取 Task 记录-ServiceExecutionResponse
/api/service/executions/GET获取 Task 记录列表-ServiceExecutionListResponse
7. 空间转录组模块 (Spatial) & 8. 可视化模块 (Visualization)
接口路径方法功能请求 DTO响应 DTO
/api/spatial/{file_id}/imageGET获取切片图像FileIdPathGetSliceImageResponse
/api/spatial/{file_id}/spotsGET获取 Spots 位置FileIdPathGetSpotsResponse
/api/spatial/{file_id}/gene/{gene_name}GET获取基因表达值GeneNamePathGeneExpressionItem
/api/spatial/{file_id}/genesGET获取基因列表SpatialGenesQuerySpatialGenesResponse
/api/visualization/{file_id}/typesGET获取支持的可视化类型-VisualizationTypesResponse
/api/visualization/{file_id}/spatial/slice-imageGET获取切片图像(通用)-SpatialSliceImageResponse
/api/visualization/{file_id}/spatial/spotsGET获取 Spots 位置(通用)-SpatialSpotsResponse
/api/visualization/{file_id}/spatial/gene/{gene_name}/expressionGET获取基因表达(通用)-SpatialGeneExpressionItem
/api/visualization/{file_id}/spatial/genesGET获取基因列表(通用)-SpatialGenesResponse
/api/visualization/{file_id}/{visualization_type}/dataGET获取通用可视化数据VisualizationDataQueryVisualizationDataResponse
/api/visualization/query_h5ad_genesPOSTH5AD 原始 QC 预览-ApiResponse(通用)
/api/visualization/download_h5adGET下载 H5AD 子集-二进制流

二、DTO数据结构代码

由于代码实现比较简单,详情见gitee仓库,此处不详述了。

三、个人感悟

通过梳理路由接口与DTO的映射关系,我深刻认识到"契约先行"原则在复杂系统开发中的重要性。本次设计不仅完成了基本的CRUD映射,更实现了业务逻辑的系统性梳理和解耦。借助FastAPI等框架的强类型特性,我们将路由参数(如file_id)显式定义为FileIdPath等DTO,实现了参数校验的前置化,既有效拦截了非法请求,又减少了业务层的防御性代码,确保了数据传输安全。

在接口设计上,我们严格区分Request和Response的职责:文件上传请求仅包含必要参数,而响应则封装完整的元数据。这种设计既避免了数据冗余和泄露风险,又实现了逻辑解耦。通过采用通用响应体ApiResponse处理基础状态,同时为复杂业务(如分析流程树)定制专用结构,这种分层策略既保持了接口简洁性,又为未来扩展(如可视化模块)预留了灵活的data字段空间。

经过这次实践,我深刻体会到:通过严谨的数据模型定义来构建高内聚、低耦合的后端服务,是确保系统稳定性和可维护性的关键所在。

http://www.jsqmd.com/news/707567/

相关文章:

  • 直播通知:AI时代程序员竞争力探讨 + Layer泄漏作业剖析
  • 基于FastAPI的Python CMS GnuBoard6:从架构解析到生产部署实战
  • OpenClaw 进阶实战指南:从新手到高手的四大核心策略
  • 什么是DSP? ESP32 有DSP吗?
  • AI智能体在育儿场景的应用:toddler.skill项目解析与实战指南
  • Qwen3.5-9B-GGUF开发者体验优化:CLI命令行工具封装+快捷指令配置
  • 小白也能当风格大师:Nunchaku FLUX.1 CustomV3结合IPAdapter完整使用指南
  • py-spy 一些新特性
  • LongCat-Image-Editn实战教程:用GitHub Actions实现PR触发自动图像编辑与效果验证
  • AI 时代来临, “一人公司” 真的能行得通吗?
  • 2026熙琦科技迷你打印机批发拿货渠道干货实用整理分享 - 热敏感科技蜂
  • 告别B站视频下载烦恼!DownKyi哔哩下载姬完整使用指南
  • ESP32 具备DSP吗?
  • Python AutoML工具全解析与应用实践
  • LSTM模型开发全流程:从数据预处理到部署优化
  • real-anime-z提示词进阶:用权重语法`(word:1.3)`强化关键视觉元素的方法
  • 铜合金精密零件加工:黄铜、铍铜、红铜怎么选? - 莱图加精密零件加工
  • 深度学习研究资源库:构建、使用与维护高质量知识导航系统
  • Resource Override深度解析:实现浏览器资源重定向与内容注入的架构设计
  • 自动化脚本框架设计:从原理到实践,构建高效开发工作流
  • CSEF技术:工业人机协作中的人体工学优化方案
  • 多标签学习与射频指纹在无线通信设备识别中的应用
  • ubuntu 搭建本地镜像仓库
  • XUnity自动翻译器:打破语言壁垒,让Unity游戏无障碍畅玩
  • OFDM系统峰均比优化与CFR技术实现
  • 企业级供应商管理系统厂商推荐:主流方案对比(避坑必看) - 品牌排行榜
  • 图片优化:格式选择与压缩技巧
  • Kook Zimage 真实幻想 Turbo Visual Studio安装与配置:Windows开发环境搭建
  • 【无标题】C语言数据结构相关知识及代码
  • RWKV-7(1.5B World)数据结构应用:优化模型输入输出的内存布局