L-HeliantHuS / Duckygo
Licence: mit
一个同时支持Session以及JWT的高性能高可用 Golang Restful API 脚手架 !
Stars: ✭ 57
Programming Languages
go
31211 projects - #10 most used programming language
Projects that are alternatives of or similar to Duckygo
Xboot
基于Spring Boot 2.x的一站式前后端分离快速开发平台XBoot 微信小程序+Uniapp 前端:Vue+iView Admin 后端:Spring Boot 2.x/Spring Security/JWT/JPA+Mybatis-Plus/Redis/Elasticsearch/Activiti 分布式限流/同步锁/验证码/SnowFlake雪花算法ID 动态权限 数据权限 工作流 代码生成 定时任务 社交账号 短信登录 单点登录 OAuth2开放平台 客服机器人 数据大屏 暗黑模式
Stars: ✭ 3,432 (+5921.05%)
Mutual labels: mysql, redis, jwt
Apiproject
[https://www.sofineday.com], golang项目开发脚手架,集成最佳实践(gin+gorm+go-redis+mongo+cors+jwt+json日志库zap(支持日志收集到kafka或mongo)+消息队列kafka+微信支付宝支付gopay+api加密+api反向代理+go modules依赖管理+headless爬虫chromedp+makefile+二进制压缩+livereload热加载)
Stars: ✭ 124 (+117.54%)
Mutual labels: gorm, redis, jwt
Imi
imi 是基于 Swoole 的 PHP 协程开发框架,它支持 Http、Http2、WebSocket、TCP、UDP、MQTT 等主流协议的服务开发,特别适合互联网微服务、即时通讯聊天im、物联网等场景!。QQ群:17916227
Stars: ✭ 680 (+1092.98%)
Mutual labels: mysql, redis, jwt
golang api
This is a source code of my golang restful api series on youtube.
Stars: ✭ 36 (-36.84%)
Mutual labels: jwt, gin, gorm
Go Admin
基于Gin + Vue + Element UI的前后端分离权限管理系统脚手架(包含了:多租户的支持,基础用户管理功能,jwt鉴权,代码生成器,RBAC资源控制,表单构建,定时任务等)3分钟构建自己的中后台项目;文档:https://doc.go-admin.dev Demo: https://www.go-admin.dev Antd beta版本:https://preview.go-admin.dev
Stars: ✭ 5,439 (+9442.11%)
Mutual labels: gin, jwt, gorm
Kitsvc
⚙ 一個基於 Golang、Consul、Prometheus、EventStore、Gin、Gorm、NSQ 的微服務起始結構。
Stars: ✭ 101 (+77.19%)
Mutual labels: gorm, mysql, jwt
Snake
🐍 一款小巧的基于Go构建的开发框架,可以快速构建API服务或者Web网站进行业务开发,遵循SOLID设计原则
Stars: ✭ 615 (+978.95%)
Mutual labels: gorm, gin, jwt
Learning tools
Go 学习、Go 进阶、Go 实用工具类、Go-kit ,Go-Micro 微服务实践、Go 推送
Stars: ✭ 605 (+961.4%)
Mutual labels: redis, gin, jwt
Zendea
A free, open-source, self-hosted forum software written in Go 官方QQ群:656868
Stars: ✭ 116 (+103.51%)
Mutual labels: gorm, gin, jwt
Go Book Store Api
Go Sample project to understand Mysql CRUD operation with best practises Includes logging, JWT, Swagger and Transactions
Stars: ✭ 18 (-68.42%)
Mutual labels: mysql, jwt, jwt-token
Golang Gin Realworld Example App
Exemplary real world application built with Golang + Gin
Stars: ✭ 1,780 (+3022.81%)
Mutual labels: gorm, gin, jwt
Cool Admin Midway
cool-admin(midway版)一个很酷的后台权限管理框架,模块化、插件化、CRUD极速开发,永久开源免费,基于midway.js 2.0、typeorm、mysql、jwt、element-ui等构建
Stars: ✭ 204 (+257.89%)
Mutual labels: mysql, redis, jwt
Ugin
UGin is an API boilerplate written in Go (Golang) with Gin Framework.
Stars: ✭ 110 (+92.98%)
Mutual labels: gorm, mysql, gin
Dokit
基于 Spring Boot2、 Jpa、 Spring Security、JWT、redis、Vue的前后端分离的后台管理系统开发平台, 用户管理、菜单管理、角色管理、字典管理、权限控制的方式为RBAC,操作日志、异常日志、接口限流、项目支持数据权限管理,支持一键生成前后端代码(支持在线预览及打包下载),支持前端菜单动态路由 可一键部署服务器应用,数据库。系统中活跃用户状态监控,监视当前系统CPU、内存、磁盘、堆栈等相关信息,基于Element UI在线表单设计及生成Vue代码。
Stars: ✭ 348 (+510.53%)
Mutual labels: mysql, redis, jwt
Bcmall
以教学为目的的电商系统。包含ToB复杂业务、互联网高并发业务、缓存应用;DDD、微服务指导。模型驱动、数据驱动。了解大型服务进化路线,编码技巧、学习Linux,性能调优。Docker/k8s助力、监控、日志收集、中间件学习。前端技术、后端实践等。主要技术:SpringBoot+JPA+Mybatis-plus+Antd+Vue3。
Stars: ✭ 188 (+229.82%)
Mutual labels: mysql, redis, jwt
Ginbro
Converting a MySQL database'schema to a RESTful golang APIs app in the fastest way
Stars: ✭ 97 (+70.18%)
Mutual labels: gorm, gin, jwt
Shirojwt
API SpringBoot + Shiro + Java-Jwt + Redis(Jedis)
Stars: ✭ 503 (+782.46%)
Mutual labels: mysql, redis, jwt
Geek Framework
基于SpringBoot+Shiro+Redis+Jwt+Thymeleaf+MyBatis 开发的后台用户、角色、权限、会员管理、RestFul、Token和前台用户登录注册以及前后台用户分离的脚手架,技术交流请加QQ群:805442966
Stars: ✭ 804 (+1310.53%)
Mutual labels: mysql, redis, jwt
DuckyGo (基于gin+gorm搭建的快速高效稳定同时支持Session和Jwt的web restful api)
项目基于MIT协议,任何人可以进行修改并发布,如果本项目你发现有任何BUG,欢迎提交PullRequest 🔥
- DuckyGo-MVC(模板语言和Django一模一样): 基于Gin+Pongo2gin+Gorm的MVC开发框架
- DuckyGo参考视频: 使用DuckyGo进行快速Restful API开发
特别感谢 😋
感谢JetBrains提供IDE.
目的 🌟
本项目采用了一系列Golang中比较流行的组件,可以以本项目为基础快速搭建Restful Web API
说明
响应序列化:
任何一个json返回值,都是以serializer.Response进行序列化出来
最后在api(controll)层c.JSON返回的时候加.Result() 进行加TimeStamp
- 本项目自带Python写的接口测试, 在根目录下的
DuckyGoTest.py
, 按照自己需求更改即可流畅的完成测试~
特色 💙
本项目已经整合了许多开发API所必要的组件:
- Gin: 轻量级Web框架,自称路由速度是golang最快的.
- GORM: ORM工具。本项目需要配合Mysql使用.
- Gin-Session: Gin框架提供的Session操作工具.
- Go-Redis: Golang Redis客户端.
- godotenv: 开发环境下的环境变量工具,方便使用环境变量.
- Gin-Cors: Gin框架提供的跨域中间件.
- Jwt-Go: Golang JWT认证组件
- AMPQ: Golang RabbitMQ客户端
- 实现了国际化i18n的一些基本功能. (详细在API层调用, conf/下有配置文件)
- 本项目自动选择内存或者是Redis来保存用户Session登陆状态.
- 使用Redis-list实现了内部消息队列,发送邮件可实现完全异步发送.
- 同时实现了session和jwt验证, 让用户可以自己选择而不用自己造轮子.
本项目已经预先实现了一些常用的代码方便参考和复用:
- 创建了用户模型
- 实现了
/api/v1/user/register
用户注册接口 - 实现了
/api/v1/user/login
用户登录接口 - 实现了
/api/v1/user/me
用户资料接口(需要登录后获取session) - 实现了
/api/v1/user/logout
用户登出接口(需要登录后获取session) - 实现了
/api/v1/user/changepassword
用户修改密码接口(需要登录后获取session) - 实现了
/api/v2/user/register
用户注册接口(和v1基本一样) - 实现了
/api/v2/user/login
用户登录接口(获得jwtToken, 无状态) - 实现了
/api/v2/user/me
用户个人信息接口(传递token验证身份, 无状态) - 实现了
/api/v2/user/changepassword
用户修改密码接口(传递token验证身份, 无状态) - 实现了
/api/v2/user/logout
用户注销接口(传递token, 并且将token存入黑名单, 无状态)
本项目已经预先创建了一系列文件夹划分出下列模块:
- api文件夹就是MVC框架的controller,负责协调各部件完成任务
- model文件夹负责存储数据库模型和数据库操作相关的代码
- service负责处理比较复杂的业务,把业务代码模型化可以有效提高业务代码的质量(比如用户注册,充值,下单等)
- serializer储存通用的json模型,把model得到的数据库模型转换成api需要的json对象, 以及定义API的Code值
- cache负责redis, RabbitMQ缓存相关的代码
- auth权限控制文件夹
- util一些小工具, 目前有randomString、Logger、SendEmail
- conf放一些静态存放的配置文件,其中locales内放置翻译相关的配置文件
log放生成的日志文件,第一次使用需要双击运行一下bat文件生成log文件.
LOG_LEVEL说明 💜
第一次使用要先运行log
文件夹下的bat
批处理,用来生成记录log所需要的log文件.
当设置LOG_LEVEL设置为ERROR
就只会显示 error panic
当设置LOG_LEVEL设置为WARNING
就只会显示 warning error panic
当设置LOG_LEVEL设置为INFO
就只会显示 info warning error panic
当设置LOG_LEVEL设置为DEBUG
则全部显示
Godotenv 💛
项目在启动的时候依赖以下环境变量,但是在也可以在项目根目录创建.env文件设置环境变量便于使用(建议开发环境使用)
MYSQL_DSN="db_user:[email protected](127.0.0.1:3306)/db_name?charset=utf8&parseTime=True&loc=Local" # Mysql连接配置
RABBITMQ_DSN="amqp://mq_user:[email protected]:5672/virtual_host" # RabbitMQ连接配置 默认没有开启
REDIS_ADDR="127.0.0.1:6379" # Redis端口和地址
REDIS_PW="" # Redis连接密码
REDIS_DB="" # Redis库从0到10,不填即为0
SESSION_SECRE="" # Seesion密钥 (切记不能泄露!!)
JWT_SECRET_KEY="" # JWT密钥配置 (切记不能泄露!!)
GIN_MODE="debug" # 设置gin的运行模式,有 debug 和 release
LOG_LEVEL="ERROR" # 设置为ERROR基本不会记录log 设置为DEBUG则会详细记录每次请求
RIM="notuse" # 设置为use的时候会启动mysql之类的连接,非设置为notuse就会关闭mysql连接
V1="on" # 是否启动v1 (Session-Cookie身份验证)
V2="off" # 是否启动v2 (JWT-Token身份验证)
Windows安装MySQL和Redis麻烦?😶 你可以使用Docker啊!😎
- 快速起Redis:
docker run -di --name redis -p 6379:6379 redis
- 快速起MySQL:
docker run -di --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=yourpassword mysql
因为启动容器指定了--name, 后续可以使用docker start|stop redis|mysql
来进行开启或者关闭.
如需要使用navicat等工具管理MySQL,可能会出现报错等情况:😵
docker exec -it mysql /bin/bash # 打开mysql bash交互
mysql -u root -p # 进入mysql交互
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; # 更改加密方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'yourpassword'; # 更改密码
FLUSH PRIVILEGES; # 刷新
Go Mod 💚
本项目使用Go Mod管理依赖。
go mod init DuckyGo
export GOPROXY=http://mirrors.aliyun.com/goproxy/
go run main.go // 自动安装
运行 💗
go run main.go
项目运行后启动在8000端口(可以修改,参考gin文档)
本项目修改端口请查看main.go
编译 ❗️
go build main.go
Docker运行:
docker build -t duckygo:release .
docker run -di --name duckygo -p 8000:8000 duckygo:release
如需交叉编译请看这里
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].