# qt.OpenAPI-based-api-by-spark **Repository Path**: zinface/qt.open-api-based-api-by-spark ## Basic Information - **Project Name**: qt.OpenAPI-based-api-by-spark - **Description**: 一个充满优雅简单的 Apifox OpenAPI 生成的代码示例 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-09-18 - **Last Updated**: 2024-12-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # qt.OpenAPI-based-api-by-spark ## 在 ApiFox 中创建并测试接口与绑定数据模型,生成代码 1. 使用 `ApiFox` 创建 `base-api` 项目 - 在接口中添加接口 `获取分类列表` ``` http://upload.deepinos.org/api/index/get_type_list ``` - 效果 ![](assets/20220918041600.png) ![](assets/20220918040636.png) ![](assets/20220918040731.png) - 在数据模型中添加数据模型 `get_type_list` 用接口中返回的`json`数据进行智能导入 ```json {"code":0,"data":[{"id":1,"name":"游戏"},{"id":2,"name":"音乐"},{"id":3,"name":"网络"},{"id":4,"name":"办公"},{"id":5,"name":"其他"},{"id":6,"name":"图像"},{"id":7,"name":"开发工具"},{"id":8,"name":"阅读"},{"id":9,"name":"通讯"},{"id":10,"name":"主题"},{"id":11,"name":"工具"},{"id":12,"name":"视频"}]} ``` - 效果 ![](assets/20220918040949.png) ![](assets/20220918041006.png) ![](assets/20220918041019.png) 2. 使用生成代码功能生成项目代码 `CodeGenerator` - 效果 ![](assets/20220918041334.png) ![](assets/20220918041402.png) ![](assets/20220918041418.png) - `tree` 命令输出 ```bash zinface@zinface-PC:~/Documents/Apifox$ tree CodeGenerator/ CodeGenerator/ └── client ├── client.pri ├── CMakeLists.txt ├── OAIDefaultApi.cpp # 主要Api入口文件 ├── OAIDefaultApi.h # 头文件中定义了一系列 apiIndex 前缀的接口函数 ├── OAIEnum.h ├── OAIGetTypeList.cpp ├── OAIGetTypeList_data.cpp ├── OAIGetTypeList_data.h ├── OAIGetTypeList.h ├── OAIHelpers.cpp ├── OAIHelpers.h ├── OAIHttpFileElement.cpp ├── OAIHttpFileElement.h ├── OAIHttpRequest.cpp ├── OAIHttpRequest.h └── OAIObject.h 1 directory, 16 files zinface@zinface-PC:~/Documents/Apifox$ ``` ## 创建 Qt 项目进行测试 1. 使用 spark 骨架创建 Qt 项目,并将生成的代码进行导入 - `tree` 命令输出 ```bash zinface@zinface-PC:/tmp/tmp.EpsH21WiaU$ tree . ├── cmake │ ├── SparkBuildGraphviz.cmake │ ├── SparkEnvConfig.cmake │ ├── SparkFindLibraries.cmake │ ├── SparkFindQt5Config.cmake │ ├── SparkFindQt6Config.cmake │ └── SparkMacrosConfig.cmake ├── CMakeLists.txt ├── CodeGenerator │ └── client │ ├── client.pri │ ├── CMakeLists.txt │ ├── OAIDefaultApi.cpp # 主要Api入口文件 │ ├── OAIDefaultApi.h # 头文件中定义了一系列 apiIndex 前缀的接口函数 │ ├── OAIEnum.h │ ├── OAIGetTypeList.cpp # 获取分类列表的数据模型 │ ├── OAIGetTypeList_data.cpp # 分类列表的 data 成员数据模型 │ ├── OAIGetTypeList_data.h # 分类列表的 data 成员数据模型 │ ├── OAIGetTypeList.h │ ├── OAIHelpers.cpp │ ├── OAIHelpers.h │ ├── OAIHttpFileElement.cpp │ ├── OAIHttpFileElement.h │ ├── OAIHttpRequest.cpp │ ├── OAIHttpRequest.h │ └── OAIObject.h ├── Makefile ├── README.md └── src └── main.cpp # 基本的程序入口 4 directories, 35 files zinface@zinface-PC:/tmp/tmp.EpsH21WiaU$ ``` 2. 使用 spark 骨架构建宏将生成的代码进行构建为库 ```cmake # 优雅的将 CodeGenerator/client 下的代码构建为 OpenAPI 库 spark_add_libraries_path(OpenAPI CodeGenerator/client) target_link_qt5(OpenAPI) # 优雅的使其链接到 qt5 核心库 ``` ```cmake # 将项目构建,并优雅的链接到 OpenAPI 库 spark_add_executable_path(${PROJECT_NAME} src ${QRC_SOURCES} ) target_link_OpenAPI(${PROJECT_NAME}) ``` 3. 将生成的代码进行简单的代码测试 ```bash # 直接执行 make run 进行自动构建并执行测试 make run ``` 4. 其它内容 - 优雅的显示库依赖结构 - 构建依赖图 ```bash # 前提是您已经安装 graphviz 软件包,dot 命令用于生成依赖图 # graphviz: /usr/bin/dot make builddeps ``` - 效果 ![](assets/20220918045053.png)