# Data API **Repository Path**: atworking/Data-API ## Basic Information - **Project Name**: Data API - **Description**: 简单存储一些数据,并支持Excel批量导入导出的,分页等相关内容的API(未实现删除和更新,因为只用来数据存储) - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-04-11 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 数据存储与查询的API ## 相关依赖 ```bash github.com/360EntSecGroup-Skylar/excelize Excel的导入 github.com/gin-gonic/gin web框架 github.com/go-ini/ini 加载ini配置文件 github.com/jinzhu/gorm orm框架 github.com/unknwon/com 工具类项目多用于类型转换 github.com/tealeg/xlsx Excel的导出 ``` ## 实现步骤 1. 创建自定义log的处理,使日志可以保存文件 2. 创建可配置文件,使用`ini` 配置,并使用对应的包获取配置 3. 使用`Gorm` 连接数据库,此处为了方便使用的SQLite3 4. 创建数据库的关系映射和一些处理方法 5. 创建Excel导入导出的方法(是结构体的方法,不是函数) 6. 相关的Handler处理(Gin框架的handler函数) 7. `GIn` 路由的使用(此时使用了`gin`的`StaticFS` 用来下载导出的Excel) 8. 入口函数的完成,此处没有使用`gin` 的`Run` ```go // 数据库操作 err := dao.InitDB() if err != nil { panic(err) } defer dao.Close() // 迁移数据库 dao.SqlDB.AutoMigrate(&models.Data{}) // 初始化路由 port := fmt.Sprintf(":%d", setting.HTTPPort) log.Printf("Run App In Port:%s\n", port) r := routers.InitRouter() server := &http.Server{ // Addr 必须 ":xxxx"格式的字符串 Addr: port, Handler: r, ReadTimeout: setting.ReadTimeout, WriteTimeout: setting.WriteTimeout, MaxHeaderBytes: 2 << 10, } server.ListenAndServe() ``` 9. 使用RESTAPI进行相关测试