news 2026/4/27 8:19:01

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
山东大学软件学院项目实训-个人博客(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字段空间。

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 8:17:01

MCP 2026智能调度架构升级全路径(2026 Q1已强制落地的3类合规红线)

更多请点击: https://intelliparadigm.com 第一章:MCP 2026智能调度架构升级全景概览 MCP 2026 是面向超大规模异构计算集群的新一代智能控制平面,其核心调度架构在2026版本中完成从“规则驱动”到“感知-推理-决策”闭环的范式跃迁。本次升…

作者头像 李华
网站建设 2026/4/27 8:15:19

复杂工业管网故障阀门智能定位系统实现【附源码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,查看文章底部二维码(1)动态阻力系数修正的阀门网络压降模型:基…

作者头像 李华
网站建设 2026/4/27 8:13:49

RWKV-7(1.5B World)数据结构应用:优化模型输入输出的内存布局

RWKV-7(1.5B World)数据结构应用:优化模型输入输出的内存布局 1. 为什么需要关注内存布局优化 在部署RWKV-7这类大语言模型时,很多开发者容易忽视内存布局对推理性能的影响。实际工程实践中,我们经常遇到这样的情况&…

作者头像 李华