All Projects → wangshibiaoFlytiger → Apiproject

wangshibiaoFlytiger / 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热加载)

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Apiproject

Bcmall
以教学为目的的电商系统。包含ToB复杂业务、互联网高并发业务、缓存应用;DDD、微服务指导。模型驱动、数据驱动。了解大型服务进化路线,编码技巧、学习Linux,性能调优。Docker/k8s助力、监控、日志收集、中间件学习。前端技术、后端实践等。主要技术:SpringBoot+JPA+Mybatis-plus+Antd+Vue3。
Stars: ✭ 188 (+51.61%)
Mutual labels:  kafka, redis, jwt
Gnomock
Test your code without writing mocks with ephemeral Docker containers 📦 Setup popular services with just a couple lines of code ⏱️ No bash, no yaml, only code 💻
Stars: ✭ 398 (+220.97%)
Mutual labels:  kafka, mongo, redis
Blog.core
💖 ASP.NET Core 6.0 全家桶教程,前后端分离后端接口,vue教程姊妹篇,官方文档:
Stars: ✭ 3,542 (+2756.45%)
Mutual labels:  redis, cors, jwt
Netdiscovery
NetDiscovery 是一款基于 Vert.x、RxJava 2 等框架实现的通用爬虫框架/中间件。
Stars: ✭ 573 (+362.1%)
Mutual labels:  kafka, spider, redis
Springboot Learning
基于Gradle构建,使用SpringBoot在各个场景的应用,包括集成消息中间件、前后端分离、数据库、缓存、分布式锁、分布式事务等
Stars: ✭ 340 (+174.19%)
Mutual labels:  kafka, redis, jwt
Duckygo
一个同时支持Session以及JWT的高性能高可用 Golang Restful API 脚手架 !
Stars: ✭ 57 (-54.03%)
Mutual labels:  gorm, redis, jwt
Kitsvc
⚙ 一個基於 Golang、Consul、Prometheus、EventStore、Gin、Gorm、NSQ 的微服務起始結構。
Stars: ✭ 101 (-18.55%)
Mutual labels:  gorm, jwt
Whatsmars
Java生态研究(Spring Boot + Redis + Dubbo + RocketMQ + Elasticsearch)🔥🔥🔥🔥🔥
Stars: ✭ 1,389 (+1020.16%)
Mutual labels:  kafka, redis
X Admin
致力于快速开发中小型后台管理系统项目模板(更新中......)
Stars: ✭ 123 (-0.81%)
Mutual labels:  redis, jwt
Flink Learning
flink learning blog. http://www.54tianzhisheng.cn/ 含 Flink 入门、概念、原理、实战、性能调优、源码解析等内容。涉及 Flink Connector、Metrics、Library、DataStream API、Table API & SQL 等内容的学习案例,还有 Flink 落地应用的大型项目案例(PVUV、日志存储、百亿数据实时去重、监控告警)分享。欢迎大家支持我的专栏《大数据实时计算引擎 Flink 实战与性能优化》
Stars: ✭ 11,378 (+9075.81%)
Mutual labels:  kafka, redis
Zhihuspider
知乎用户公开个人信息爬虫, 能够爬取用户关注关系,基于Python、使用代理、多线程
Stars: ✭ 92 (-25.81%)
Mutual labels:  spider, redis
Parsevip
解析VIP资源,解析出酷狗、QQ音乐、腾讯视频、人人视频的真实地址
Stars: ✭ 105 (-15.32%)
Mutual labels:  redis, jwt
Ultimate Go
This repo contains my notes on working with Go and computer systems.
Stars: ✭ 1,530 (+1133.87%)
Mutual labels:  kafka, gorm
Springboot Templates
springboot和dubbo、netty的集成,redis mongodb的nosql模板, kafka rocketmq rabbit的MQ模板, solr solrcloud elasticsearch查询引擎
Stars: ✭ 100 (-19.35%)
Mutual labels:  kafka, redis
Ginbro
Converting a MySQL database'schema to a RESTful golang APIs app in the fastest way
Stars: ✭ 97 (-21.77%)
Mutual labels:  gorm, jwt
Spring Boot 2.x Examples
Spring Boot 2.x code examples
Stars: ✭ 104 (-16.13%)
Mutual labels:  kafka, redis
Typescript Restful Starter
Node.js + ExpressJS + Joi + Typeorm + Typescript + JWT + ES2015 + Clustering + Tslint + Mocha + Chai
Stars: ✭ 97 (-21.77%)
Mutual labels:  cors, jwt
Superman
Superman是什么:构建Java 高级开发技术的知识体系,从基础不断打怪升级成为超人之路(更新中.......)
Stars: ✭ 106 (-14.52%)
Mutual labels:  kafka, redis
Milkomeda
Spring extend componets which build from experience of bussiness, let developers to develop with Spring Boot as fast as possible.(基于Spring生态打造的一系列来自业务上的快速开发模块集合。)
Stars: ✭ 117 (-5.65%)
Mutual labels:  redis, jwt
Zendea
A free, open-source, self-hosted forum software written in Go 官方QQ群:656868
Stars: ✭ 116 (-6.45%)
Mutual labels:  gorm, jwt

若本项目给您带来收获, 还请您动动小拇指,右上角给点个赞哈,万分感谢哈哈!!!

项目原始仓库地址: https://github.com/wangshibiaoFlytiger/apiproject
欢迎关注官方微信公众号,及时收到一手技术资料!
微信公众号二维码

1. 博客地址

https://www.sofineday.com

这 2 天刚开始搭建, 后面会逐步完善功能,性能和内容等, 望收藏, 有任何疑问请提交 issue, 谢谢!

欢迎加作者微信645102170或进群共同交流, 请扫下方二维码. 请备注 sofineday😄

目标是归纳出平时经常用到的重要知识点, 作为日后的枕边工具书

2. 工程创建

mkdir ./apiproject

cd ./apiproject

go mod init apiproject

go build

3. 集成 gin web 框架

go get github.com/gin-gonic/gin

go get github.com/go-sql-driver/mysql

go get github.com/jinzhu/gorm

4. 项目规范

4.1 包名追加前缀

model 层: m_

dao 层: d_

service 层: s_

controller 层: c_

4.2 文件名或 struct 名称定义规范

每一层的文件名或类名以所属层为后缀, model 层例外

5. 测试代码

执行单元测试, 需要进入 test 目录, 然后执行 go test

6. live reload 自动编译并运行

go get -u github.com/cosmtrek/air

项目根目录创建 liveReload.conf 文件:

编辑配置项 bin,full_bin,exclude_file(将 rice-box.go 移除)

启动 liveReload 服务

 air -c ./liveReload.conf

7. 集成自动测试框架 goconvey

go get github.com/smartystreets/goconvey

8. 支持跨域

go get github.com/gin-contrib/cors

此外还需要如下显示指定 ugorji/go 的版本, 使用 > v1.1.2 版本,最新版本会出现包冲突错误:cannot load github.com/ugorji/go/codec: ambiguous import: found github.com/ugorji/go/codec in multiple modules go get github.com/ugorji/[email protected]

9. 指定运行环境

通过指定命令行参数--profile 参数来加载对应的配置文件, 取值范围:dev,test,pro.

可通过执行帮助命令查看./apiproject help

10. 打包静态文件到可执行文件

go get github.com/GeertJohan/go.rice/...

执行 go build 之前, 执行如下命令, 将项目中所有引用 rice.MustFindBox 或 rice.FindBox 的所属文件路径, 作为--import-path 的参数

rice -v --import-path "./router" --import-path "./config" embed-go

注意事项

  1. rice.MustFindBox 的路径参数不能为绝对路径, 且必须为字符串字面量, 不能为字符串变量
  2. 最终的静态文件路径不能以./开头, 否则报错, 如错误写法 box.MustBytes("./config_dev.ini"), 正确写法 box.MustBytes("config_dev.ini")
  3. 每次修改相应的静态文件, 记得随时执行 rice 命令, 否则会导致程序读取的文件内容不是最新的
  4. 把 box 理解为目录即可

11. 压缩可执行文件

11.1 优化编译参数

go build 增加如下编译参数

   -ldflags "-s -w"

11.2 使用 upx 压缩工具进一步压缩

下载地址:https://github.com/upx/upx/releases

使用方法

upx --brute 可执行文件路径

12. git 分支约定

12.1 master 分支放通用功能, 目标是打造成 1 个通用框架

12.2 创建实际项目的操作

创建项目主分支

git checkout -b 项目名称_master

创建针对该项目的分支

git checkout 项目名称_master
git checkout -b 项目名称_branch_当前时间

合并项目分支到项目主分支

git checkout 项目名称_master

合并项目分支到项目主分支

合并通用框架的递增功能到项目分支(可以作为通用的功能一定要在 master 分支中开发)

13. 分布式 ID 生成库

go get github.com/bwmarrin/snowflake

14. kafka 消息队列

confluent-kafka-go 在后期使用过程中, kafka 服务端报未知异常, 故舍弃该客户端, 改用 sarama

15. 纯真 ip 归属地查询

15.1 安装

直接执行如下命令会提示安装失败

malformed module path "github.com/kayon/iploc/...": double dot

经实践, 顺序执行如下 2 个命令即可完成安装, 原因未知

go get -u github.com/kayon/iploc/
go get -u github.com/kayon/iploc/...

15.2 下载纯真数据库文件

iploc-fetch qqwry.gbk.dat

15.3 将 IP 库文件的编码转换为 UTF-8

iploc-conv -s qqwry.gbk.dat -d qqwry.utf8.dat

16. 请作者喝杯☕️

若本项目给您带来收获,就请作者喝杯咖啡吧, 请备注 sofineday, 谢谢😄 | 微信 | 支付宝 | | ------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | | 微信 | 支付宝 |

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].