美文网首页
goApi框架

goApi框架

作者: 耍帅oldboy | 来源:发表于2022-09-20 16:41 被阅读0次

1.基本介绍

1.1 项目介绍

ginApi是一个基于gin开发的框架,集成了api签名、鉴权、全链路日志追踪,减少在项目中重复造轮子

1.2 链路日志追踪

通过logid可以追踪一次http请求的日志,logid均在接口中返回

日志是按照小时切割,接口中请求和返回的数据均通过中间件<span style="color:green">LoggerMiddleware.go</span>自动记录,mysql的操作sql语句也自动记录

例如:用户请求登录/api/user/login

返回如下数据

{
    "code": 1,
    "data": {
        "token": "PqrUdnsC0kE7VARhqoMGY5Jm4zwkfixr"
    },
    "logid": "cd79e47c610343cbb3345c8603e7dacd",
    "msg": "success"
}

进入的日志目录,根据返回的logid<span style="color:red">cd79e47c610343cbb3345c8603e7dacd</span>查找,一次http请求的日志

[root@localhost 202209]# cd logs/202209
[root@localhost 202209]# grep cd79e47c610343cbb3345c8603e7dacd 2022090312.log 
2022/09/03 12:11:42 logid[cd79e47c610343cbb3345c8603e7dacd]  url[/api/user/login?sign=f9e9eb19af3aa19f0fe83bc5b43742c9ec65dc57] ip[127.0.0.1] method[POST] post_data[] body[{"username": "zhangsan", "password": "123456", "token": "A5tvtvTZR56Vekj8K7V71I25OpVuQ8jg"}]
2022/09/03 12:11:42 logid[cd79e47c610343cbb3345c8603e7dacd]  url[/api/user/login?sign=f9e9eb19af3aa19f0fe83bc5b43742c9ec65dc57] signPre[abc123{"username": "zhangsan", "password": "123456", "token": "A5tvtvTZR56Vekj8K7V71I25OpVuQ8jg"}abc123]
2022/09/03 12:11:42 logid[cd79e47c610343cbb3345c8603e7dacd]  mysql[SELECT * FROM `user` WHERE username='zhangsan' ORDER BY `user`.`id` LIMIT 1] time[9.4602] filePath[D:/www/go/ginApi/Service/UserService.go:130]
2022/09/03 12:11:42 logid[cd79e47c610343cbb3345c8603e7dacd]  url[/api/user/login?sign=f9e9eb19af3aa19f0fe83bc5b43742c9ec65dc57] response[{"code":1,"data":{"token":"PqrUdnsC0kE7VARhqoMGY5Jm4zwkfixr"},"logid":"cd79e47c610343cbb3345c8603e7dacd","msg":"success"}]

1.3 框架架构

        ┌ Common                             (公共模块)
        │   └── Enum                         (枚举)
        │   └── Logger                       (自定义日志)
        │   └── Tools                        (工具文件)
        ├── Config                           (配置文件)
        ├── Controller                       (控制器)
        │   ├── Admin                        (后台控制器)
        │   └── Api                          (api控制器)
        ├── logs                             (日志目录)
        ├── Middleware                       (中间件)
        │   ├── CheckSignMiddleware.go       (签名中间件)
        │   ├── CheckTokenMiddleware.go      (校验token中间件)          
        │   └── LoggerMiddleware.go          (日志中间件)
        ├── Models                           (中间件层)
        │   ├── Mysql.go                     (mysql model)          
        │   └── Redis.go                     (redis model)
        ├── Routers                          (路由)
        │   ├── AdminRouter.go               (后台路由)
        │   ├── ApiRouter.go                 (api路由)
        │   └── Router.go.go                 (路由)
        ├── Service                          (服务层)
        ├── static                           (静态资源)
        │   ├── css                          (css文件)
        │   ├── image                        (图片文件)
        │   └── js                           (js文件)
        └── template                         (路由层)
            └── Admin                        (后台模板文件)                        

2. 使用说明

- golang版本 >= v1.16
- IDE推荐:Goland

2.1 server项目

使用 Goland 等编辑工具


# 克隆项目
git clone https://github.com/mjy191/ginApi.git
# 进入gitApi文件夹
cd gitApi
# 配置代理防止无法下载依赖包
go env -W GOPROXY=https://goproxy.cn,https://goproxy.io,direct

# 使用 go mod 并安装go依赖包
go mod tidy

# 编译 
go build -o server main.go (windows编译命令为go build -o server.exe main.go )

# 运行二进制
./server (windows运行命令为 server.exe)

相关文章

  • goApi框架

    1.基本介绍 1.1 项目介绍 ginApi是一个基于gin开发的框架,集成了api签名、鉴权、全链路日志追踪,减...

  • Android 中常用的框架集合

    常用框架 常用框架 常用框架 常用框架 常用框架 常用框架 常用框架 UI框架 感谢以上链接博主大佬的奉献。

  • 全脑表达笔记

    左脑逻辑 6个框架:时间框架、空间框架、支点框架、钟摆框架、变焦框架、递推框架。 右脑感性 6个力量:对比力量,视...

  • thinkphp安装

    php框架 TP3.2框架 laravel框架 Yii框架 TP5.0框架 thinkphp框架简介 免费开源 T...

  • SSM 框架快速整合实例--学生查询

    一、快速准备 SSM 框架即 Spring 框架、SpringMVC 框架、MyBatis 框架,关于这几个框架的...

  • 多媒体笔记 | 框架流程

    一、整体框架 二、MediaPlayer框架 三、相机框架 四、录像框架 五、Video Camera框架 六、O...

  • 1.Mybatis-01 框架概述,Mybatis 框架快速入门

    主要内容 框架概述 Mybatis 框架快速入门 1.1 什么是框架 1.1.1 什么是框架 框架( Framew...

  • 20170602基础知识-语法基础、运算符

    1、import引入框架, Foundation框架是基础框架 macOS框架:Foundation、AppKit...

  • iOS-基本技术总结

    1、基本框架:Foundation框架、UIKit框架 2、高级框架:Core Data 、Core Graphi...

  • 框架的入口分析

    一、如何了解框架 1、先要找到框架的入口? 框架的初始化就是框架的入口。框架是怎么开始进行初始化的,框架...

网友评论

      本文标题:goApi框架

      本文链接:https://www.haomeiwen.com/subject/lnrvortx.html