Skip to content

基于Go + Gin框架的钓研社后端服务,提供RESTful API接口支持uni-app前端应用。

Notifications You must be signed in to change notification settings

ibreez3/UFishLab-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

钓研社后端API (Diaoyanshe API)

基于Go + Gin框架的钓研社后端服务,提供RESTful API接口支持uni-app前端应用。

技术栈

  • 语言: Go 1.21+
  • Web框架: Gin
  • 数据库: PostgreSQL 15+ (支持PostGIS空间扩展)
  • ORM: GORM
  • 认证: JWT (golang-jwt/jwt/v5)
  • 文档: Swagger/OpenAPI 3.0
  • 配置: 环境变量 (.env)

项目结构

diaoyanshe-api/
├── cmd/
│   └── api/
│       └── main.go          # 应用入口
├── internal/
│   ├── config/             # 配置管理
│   ├── controller/         # 控制器层
│   ├── database/           # 数据库迁移
│   ├── middleware/         # 中间件
│   ├── model/             # 数据模型
│   └── server/            # 服务器配置
├── go.mod                  # Go模块定义
├── go.sum                  # 依赖锁定
├── .env                    # 环境变量配置
└── test_api.sh            # API测试脚本

快速开始

1. 环境要求

  • Go 1.21+
  • PostgreSQL 15+ (建议启用PostGIS扩展)
  • Git

2. 安装依赖

# 进入项目目录
cd diaoyanshe-api

# 下载依赖
go mod tidy

3. 数据库配置

# 创建数据库
createdb diaoyanshe

# 启用PostGIS扩展(可选,用于地理位置功能)
psql -d diaoyanshe -c "CREATE EXTENSION IF NOT EXISTS postgis;"

4. 环境变量配置

复制 .env.example.env 并修改配置:

cp .env.example .env

编辑 .env 文件,设置数据库连接信息:

DB_HOST=localhost
DB_PORT=5432
DB_USER=your_db_user
DB_PASSWORD=your_db_password
DB_NAME=diaoyanshe
JWT_SECRET=your-super-secret-key

5. 运行应用

# 开发模式运行
go run cmd/api/main.go

# 或者构建后运行
go build -o diaoyanshe-api ./cmd/api
./diaoyanshe-api

应用将在 http://localhost:8080 启动

6. API测试

运行测试脚本验证API功能:

./test_api.sh

API文档

应用启动后,访问 Swagger 文档:

主要功能

认证模块

  • 用户注册 (POST /api/v1/auth/register)
  • 用户登录 (POST /api/v1/auth/login)
  • Token刷新 (POST /api/v1/auth/refresh)

用户模块

  • 用户信息管理
  • 个人资料更新
  • 头像上传

钓点模块

  • 钓点信息CRUD
  • 地理位置查询
  • 钓点评分和评论

社区模块

  • 帖子发布和管理
  • 评论和点赞
  • 用户关注系统

天气模块

  • 实时天气数据
  • 钓鱼指数预报
  • 历史天气分析

开发指南

添加新模型

  1. internal/model/ 目录创建模型文件
  2. internal/database/migration.goMigrate() 方法中添加模型
  3. 运行应用自动迁移数据库

添加新API

  1. internal/controller/ 创建控制器
  2. internal/server/server.gosetupRoutes() 方法中添加路由
  3. 添加Swagger注释生成文档

中间件使用

  • CORS: 自动处理跨域请求
  • AuthRequired: JWT认证保护
  • RateLimit: 请求频率限制
  • Security: 安全头设置

部署

Docker部署(推荐)

FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY . .
RUN go mod download
RUN go build -o diaoyanshe-api ./cmd/api

FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /app/diaoyanshe-api .
COPY --from=builder /app/.env .
EXPOSE 8080
CMD ["./diaoyanshe-api"]

环境变量

生产环境需要配置以下环境变量:

ENVIRONMENT=production
JWT_SECRET=your-production-jwt-secret
DB_HOST=your-db-host
DB_PASSWORD=your-db-password

贡献指南

  1. Fork 项目
  2. 创建功能分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'Add some amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 创建 Pull Request

许可证

此项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

支持

如有问题,请通过以下方式联系:

About

基于Go + Gin框架的钓研社后端服务,提供RESTful API接口支持uni-app前端应用。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published