# 基本结构 **Repository Path**: flamez57/go_demo_first ## Basic Information - **Project Name**: 基本结构 - **Description**: 学习用 - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-22 - **Last Updated**: 2024-10-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 脚手架 #### 介绍 学习用 ## 软件架构 ### 设计目录结构 #### api开发 ```text ├── common #模型目录 │ ├── config.go #加载配置文件application │ ├── database.go #初始化数据库配置 │ └── jwt.go #JWT ├── conf #项目配置文件目录 │ └── application.yml #例如:toml、yaml等等 ├── controllers #控制器目录 │ ├── UserController.go │ └── IndexController.go ├── middleware #中间件 │ ├── AuthMiddleware.go #token 认证 │ ├── CORSMiddleware.go #跨域 │ └── RecoveryMiddleware.go #错误异常捕获 ├── models #模型目录 │ └── User.go ├── response #传输参数 │ ├── response.go #封装的响应体 │ └── user_dto.go #数据传输对象 ├── routes #路由目录 │ └── routes.go ├── util #工具类 │ └── util.go ├── logs #日志文件目录,保存项目运行过程中产生的日志。 ├── main.go #项目入口 ├── README.md ├── .gitignore ``` 如果需要视图加上views和static这两个目录 ```text ├── static #静态资源目录 │ ├── css │ ├── images │ └── js ├── views #视图模板目录 │ └── index.html ``` #### 安装教程 项目初始化 ```shell #创建项目目录 mkdir go_demo_first #初始化项目 go mod init gitee.com/flamez57/go_demo_first #安装gin框架 go get -u github.com/gin-gonic/gin ``` ## 允许访问 go run main.go运行项目,浏览器访问路径:localhost:5000 ## GORM https://topgoer.com/%E6%95%B0%E6%8D%AE%E5%BA%93%E6%93%8D%E4%BD%9C/gorm/gorm%E4%BB%8B%E7%BB%8D.html ### 数据表 ```sql CREATE TABLE `user_infos` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL DEFAULT '', `telephone` varchar(11) NOT NULL DEFAULT '', `password` varchar(255) NOT NULL DEFAULT '', `created_at` datetime(3) DEFAULT NULL, `updated_at` datetime(3) DEFAULT NULL, `deleted_at` datetime(3) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4; ``` 注册 ```cmd curl http://localhost:5000/api/auth/register \ --include \ --header "Content-Type: application/json" \ --request "POST" \ --data '{"name": "zhangsan","password": "123456","telephone": "17758023364"}' ``` 登录 ```cmd curl http://localhost:5000/api/auth/login \ --include \ --header "Content-Type: application/json" \ --request "POST" \ --data '{"name": "zhangsan","password": "123456","telephone": "17758023364"}' ``` 查看用户信息 ``` curl -H "Authorization: flamez:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySWQiOjIsImV4cCI6MTcyNDkwNzkyNywiaWF0IjoxNzI0MzAzMTI3LCJpc3MiOiJqaWFuZ3pob3UiLCJzdWIiOiJ1c2VyIHRva2VuIn0.woLIZlfpJpbw75r545vpoSyB_fiv1xgl0iTjiIaPqHs" -i "http://localhost:5000/api/auth/userinfo" ``` ### 构建发布项目 在项目根目录下执行 `go build`,然后会生成 `go_demo_first.exe` 的文件,然后可以将这个二进制文件拷贝到任意目录下,另外需要将项目下面的 `conf` 目录也拷贝过去。 项目完成后在命令行中依次输入 ``` $env:GOOS = "linux" $env:GOARCH ="amd64" go build -o out/linux/demo . ``` 得到可以在Linux系统执行的二进制文件 ``` chmod +x demo ./demo ``` ## Gin安装 ``` go get -u github.com/gin-gonic/gin -u:已存在相关的代码包,强行更新代码包及其依赖包 阿里云: https://mirrors.aliyun.com/goproxy 微软 : https://goproxy.io 七牛云: https://goproxy.cn go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct ```