All Projects → L-HeliantHuS → Duckygo

L-HeliantHuS / Duckygo

Licence: mit
一个同时支持Session以及JWT的高性能高可用 Golang Restful API 脚手架 !

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
Go Gin Example
An example of gin
Stars: ✭ 4,992 (+8657.89%)
Mutual labels:  gorm, gin, jwt
Reading
整理阅读过的干货文章, 帖子
Stars: ✭ 318 (+457.89%)
Mutual labels:  mysql, redis, gin
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 🔥

特别感谢 😋

感谢JetBrains提供IDE.

目的 🌟

本项目采用了一系列Golang中比较流行的组件,可以以本项目为基础快速搭建Restful Web API

说明

响应序列化:

任何一个json返回值,都是以serializer.Response进行序列化出来
最后在api(controll)层c.JSON返回的时候加.Result() 进行加TimeStamp
  • 本项目自带Python写的接口测试, 在根目录下的DuckyGoTest.py, 按照自己需求更改即可流畅的完成测试~

特色 💙

本项目已经整合了许多开发API所必要的组件:

  1. Gin: 轻量级Web框架,自称路由速度是golang最快的.
  2. GORM: ORM工具。本项目需要配合Mysql使用.
  3. Gin-Session: Gin框架提供的Session操作工具.
  4. Go-Redis: Golang Redis客户端.
  5. godotenv: 开发环境下的环境变量工具,方便使用环境变量.
  6. Gin-Cors: Gin框架提供的跨域中间件.
  7. Jwt-Go: Golang JWT认证组件
  8. AMPQ: Golang RabbitMQ客户端
  9. 实现了国际化i18n的一些基本功能. (详细在API层调用, conf/下有配置文件)
  10. 本项目自动选择内存或者是Redis来保存用户Session登陆状态.
  11. 使用Redis-list实现了内部消息队列,发送邮件可实现完全异步发送.
  12. 同时实现了session和jwt验证, 让用户可以自己选择而不用自己造轮子.

本项目已经预先实现了一些常用的代码方便参考和复用:

  1. 创建了用户模型
  2. 实现了/api/v1/user/register用户注册接口
  3. 实现了/api/v1/user/login用户登录接口
  4. 实现了/api/v1/user/me用户资料接口(需要登录后获取session)
  5. 实现了/api/v1/user/logout用户登出接口(需要登录后获取session)
  6. 实现了/api/v1/user/changepassword用户修改密码接口(需要登录后获取session)
  7. 实现了/api/v2/user/register用户注册接口(和v1基本一样)
  8. 实现了/api/v2/user/login用户登录接口(获得jwtToken, 无状态)
  9. 实现了/api/v2/user/me用户个人信息接口(传递token验证身份, 无状态)
  10. 实现了/api/v2/user/changepassword用户修改密码接口(传递token验证身份, 无状态)
  11. 实现了/api/v2/user/logout用户注销接口(传递token, 并且将token存入黑名单, 无状态)

本项目已经预先创建了一系列文件夹划分出下列模块:

  1. api文件夹就是MVC框架的controller,负责协调各部件完成任务
  2. model文件夹负责存储数据库模型和数据库操作相关的代码
  3. service负责处理比较复杂的业务,把业务代码模型化可以有效提高业务代码的质量(比如用户注册,充值,下单等)
  4. serializer储存通用的json模型,把model得到的数据库模型转换成api需要的json对象, 以及定义API的Code值
  5. cache负责redis, RabbitMQ缓存相关的代码
  6. auth权限控制文件夹
  7. util一些小工具, 目前有randomString、Logger、SendEmail
  8. conf放一些静态存放的配置文件,其中locales内放置翻译相关的配置文件
  9. 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].