# goapi **Repository Path**: beiange/goapi ## Basic Information - **Project Name**: goapi - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-03 - **Last Updated**: 2026-03-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Go API 项目 一个参考ThinkPHP6框架结构的Go + Gin项目,实现了会员登录和商品管理功能。 ## 项目结构 ``` goApi/ ├── app/ # 应用目录(类似ThinkPHP的app目录) │ ├── controller/ # 控制器 │ │ ├── api/ # API控制器 │ │ └── adminapi/ # 管理后台API控制器 │ ├── model/ # 模型 │ ├── middleware/ # 中间件 │ ├── service/ # 服务层 │ └── common/ # 公共功能 ├── config/ # 配置文件(类似ThinkPHP的config目录) ├── route/ # 路由(类似ThinkPHP的route目录) ├── utils/ # 工具类 ├── main.go # 入口文件 └── database.sql # 数据库初始化文件 ``` ## 功能特性 - 会员注册、登录、登出 - JWT Token认证 - 商品增删改查(CRUD) - 分页查询 - 密码加密存储 - 中间件认证 ## 技术栈 - **框架**: Gin - **ORM**: GORM - **数据库**: MySQL - **认证**: JWT - **加密**: bcrypt ## 安装和运行 ### 1. 安装依赖 ```bash go mod download ``` ### 2. 创建数据库 ```bash mysql -u root -p < database.sql ``` 或者手动创建数据库并执行SQL文件。 ### 3. 配置数据库连接 编辑 `config/config.go` 文件,修改数据库连接信息: ```go var Config = &AppConfig{ DB: DatabaseConfig{ Host: "localhost", Port: 3306, Username: "root", Password: "your_password", Database: "goapi", }, JWTSecret: "your-secret-key-change-this", } ``` ### 4. 运行项目 ```bash go run main.go ``` 服务将在 `http://localhost:8080` 启动。 ## API 接口文档 ### 会员相关接口 #### 1. 用户注册 - **URL**: `POST /api/register` - **无需认证** 请求示例: ```json { "username": "test", "password": "123456", "nickname": "测试用户", "email": "test@example.com" } ``` 响应示例: ```json { "code": 200, "message": "success", "data": { "id": 1, "username": "test", "nickname": "测试用户" } } ``` #### 2. 用户登录 - **URL**: `POST /api/login` - **无需认证** 请求示例: ```json { "username": "test", "password": "123456" } ``` 响应示例: ```json { "code": 200, "message": "success", "data": { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } } ``` #### 3. 获取用户信息 - **URL**: `GET /api/user/info` - **需要认证**: 在Header中添加 `Authorization: Bearer {token}` 响应示例: ```json { "code": 200, "message": "success", "data": { "id": 1, "username": "test", "nickname": "测试用户", "email": "test@example.com", "phone": "" } } ``` #### 4. 用户登出 - **URL**: `GET /api/logout` - **需要认证** ### 商品相关接口 所有商品接口都需要在Header中添加 `Authorization: Bearer {token}` #### 1. 创建商品 - **URL**: `POST /adminapi/product` 请求示例: ```json { "name": "iPhone 15", "description": "最新款iPhone", "price": 6999.00, "stock": 100, "category": "手机", "image": "https://example.com/iphone15.jpg" } ``` #### 2. 更新商品 - **URL**: `PUT /adminapi/product/:id` 请求示例: ```json { "name": "iPhone 15 Pro", "price": 7999.00, "stock": 50 } ``` #### 3. 删除商品 - **URL**: `DELETE /adminapi/product/:id` #### 4. 获取商品详情 - **URL**: `GET /adminapi/product/:id` #### 5. 获取商品列表 - **URL**: `GET /adminapi/product` - **参数**: - `page`: 页码(默认1) - `page_size`: 每页数量(默认10,最大100) - `keyword`: 搜索关键词(商品名称) - `category`: 商品分类 请求示例: ``` GET /adminapi/product?page=1&page_size=10&keyword=iPhone&category=手机 ``` 响应示例: ```json { "code": 200, "message": "success", "data": { "total": 1, "list": [ { "id": 1, "name": "iPhone 15", "description": "最新款iPhone", "price": 6999.00, "stock": 100, "category": "手机", "image": "https://example.com/iphone15.jpg", "status": 1, "created_at": "2024-01-01T00:00:00Z", "updated_at": "2024-01-01T00:00:00Z" } ] } } ``` ## 测试账号 项目初始化后会创建一个管理员账号: - 用户名: `admin` - 密码: `123456` ## 开发说明 ### 目录结构说明 - **app/controller**: 控制器,处理HTTP请求和响应 - **app/model**: 数据模型,定义数据库表结构 - **app/service**: 业务逻辑层,处理具体业务 - **app/middleware**: 中间件,如JWT认证 - **config**: 配置文件 - **route**: 路由定义 - **utils**: 工具函数 ### 认证机制 项目使用JWT进行用户认证: 1. 用户登录后获取token 2. 后续请求在Header中携带token 3. 格式:`Authorization: Bearer {token}` ### 数据库迁移 项目启动时会自动创建数据库表,无需手动执行迁移命令。 ## 许可证 MIT License