Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/neon-rainbow/sky-take-out-gin
使用Gin框架重构的苍穹外卖项目
https://github.com/neon-rainbow/sky-take-out-gin
gin golang gorm jwt jwt-go postgresql redis server-sent-events
Last synced: about 1 month ago
JSON representation
使用Gin框架重构的苍穹外卖项目
- Host: GitHub
- URL: https://github.com/neon-rainbow/sky-take-out-gin
- Owner: Neon-Rainbow
- License: mit
- Created: 2024-08-01T08:47:35.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-08-27T21:19:22.000Z (3 months ago)
- Last Synced: 2024-10-15T17:21:43.164Z (about 1 month ago)
- Topics: gin, golang, gorm, jwt, jwt-go, postgresql, redis, server-sent-events
- Language: Go
- Homepage:
- Size: 354 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README-zh_cn.md
- License: LICENSE
Awesome Lists containing this project
README
# 苍穹外卖 Gin框架重构版
一个使用Gin框架重构的外卖系统
## 技术栈:
Go + Gin + Gorm + PostgreSQL + Redis + Server-Sent Events+ 项目框架:[Gin](https://gin-gonic.com/)
+ 数据库:[PostgreSQL](https://www.postgresql.org/)
+ 缓存:[Redis](https://redis.io/)
+ ORM工具:[Gorm](https://gorm.io/zh_CN/)
+ 项目内部通信:[Server-Sent Events](https://en.wikipedia.org/wiki/Server-sent_events)## 接口设计
项目实现了大多数苍穹外卖的后端接口
其中未实现的接口:
+ [ ] 微信登录(项目中使用了账号密码登录)
+ [ ] 微信支付(项目中使用了模拟支付)## 项目接口文档:
[接口文档](./docs/外卖系统.postman_collection.json)
改接口文档为postman格式,可以导入到postman使用## 与原项目的区别
该项目与苍穹外卖项目的一些接口的区别:
+ 接口使用下划线命名法,如`/api/v1/user_info`而不是`/api/v1/userInfo`
+ 接口返回的数据格式统一为:
```json
{
"code": 0,
"msg": "success",
"data": {}
}
```
其中三个字段都一定会存在,但是msg和data可能为空+ 一些参数的命名的区别,如`user_id`而不是`userId`
+ 使用了双token刷新,同时对token使用了白名单机制,将合法的token存储在了redis中,并且设置了过期时间.增加了刷新token的接口
+ 使用了Server-Sent Events实现了一个简单的消息推送功能,而不是使用WebSocket.由于项目的消息推送的时效性的要求不是很高,因此采用了更加轻量级的Server-Sent Events,同时也减少了开发成本## 项目配置文件格式:
```yaml
# config.yamldatabase:
# 数据库配置,使用PostgreSQL数据库
host: "127.0.0.1"
port: 5432
username: "admin"
password: "admin"
name: "sky_take_out"
charset: "utf8mb4"
parseTime: true
loc: "UTC"redis:
host: "127.0.0.1"
port: 6379
username: "admin"
password: "admin"
db: 0server:
host: "127.0.0.1"
port: 8080 # 服务器监听端口
logFilePath: "./logs" #
mode: "debug" # gin模式配置
timeout: 3 # 服务器超时时间,单位为秒secret:
passwordSecret: "sky_take_out" # 密码加密秘钥
jwtSecret: "sky_take_out" # jwt加密秘钥log:
level: "debug" # zap日志库等级配置
```上传文件服务器采用了[该项目](https://github.com/Neon-Rainbow/gin-image-server),该项目运行在腾讯云服务器上.请自行修改上传文件的接口