基于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测试脚本
- Go 1.21+
- PostgreSQL 15+ (建议启用PostGIS扩展)
- Git
# 进入项目目录
cd diaoyanshe-api
# 下载依赖
go mod tidy# 创建数据库
createdb diaoyanshe
# 启用PostGIS扩展(可选,用于地理位置功能)
psql -d diaoyanshe -c "CREATE EXTENSION IF NOT EXISTS postgis;"复制 .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# 开发模式运行
go run cmd/api/main.go
# 或者构建后运行
go build -o diaoyanshe-api ./cmd/api
./diaoyanshe-api应用将在 http://localhost:8080 启动
运行测试脚本验证API功能:
./test_api.sh应用启动后,访问 Swagger 文档:
- Swagger UI: http://localhost:8080/swagger/index.html
- OpenAPI JSON: http://localhost:8080/swagger/doc.json
- 用户注册 (
POST /api/v1/auth/register) - 用户登录 (
POST /api/v1/auth/login) - Token刷新 (
POST /api/v1/auth/refresh)
- 用户信息管理
- 个人资料更新
- 头像上传
- 钓点信息CRUD
- 地理位置查询
- 钓点评分和评论
- 帖子发布和管理
- 评论和点赞
- 用户关注系统
- 实时天气数据
- 钓鱼指数预报
- 历史天气分析
- 在
internal/model/目录创建模型文件 - 在
internal/database/migration.go的Migrate()方法中添加模型 - 运行应用自动迁移数据库
- 在
internal/controller/创建控制器 - 在
internal/server/server.go的setupRoutes()方法中添加路由 - 添加Swagger注释生成文档
- CORS: 自动处理跨域请求
- AuthRequired: JWT认证保护
- RateLimit: 请求频率限制
- Security: 安全头设置
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- Fork 项目
- 创建功能分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建 Pull Request
此项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
如有问题,请通过以下方式联系:
- 邮箱: support@diaoyanshe.com
- 微信: DiaoyansheSupport