Gin源码阅读笔记

 ·  ☕ 3  · 👀...

介绍

目录结构

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
├── AUTHORS.md                              记录团队成员都做了哪些事
├── BENCHMARKS.md                           性能测试报告
├── CHANGELOG.md                            软件版本迭代记录
├── CODE_OF_CONDUCT.md                      贡献者公约行为准则
├── CONTRIBUTING.md                         感觉像是号召网络一起贡献代码,该怎么做的一个指导
├── LICENSE                                 MIT License
├── Makefile                                编译文件
├── README.md                               README
├── auth.go                                 认证
├── auth_test.go                            单元测试
├── benchmarks_test.go                      性能测试
├── binding
│   ├── binding.go                          
│   ├── binding_msgpack_test.go
│   ├── binding_nomsgpack.go
│   ├── binding_test.go
│   ├── default_validator.go
│   ├── form.go                             formBinding、formMultipartBinding、formPostBinding
│   ├── form_mapping.go
│   ├── form_mapping_benchmark_test.go
│   ├── form_mapping_test.go
│   ├── header.go
│   ├── json.go
│   ├── json_test.go
│   ├── msgpack.go
│   ├── msgpack_test.go
│   ├── multipart_form_mapping.go
│   ├── multipart_form_mapping_test.go
│   ├── protobuf.go
│   ├── query.go
│   ├── uri.go
│   ├── validate_test.go
│   ├── xml.go
│   ├── xml_test.go
│   ├── yaml.go
│   └── yaml_test.go
├── codecov.yml                             持续集成配置
├── context.go                              content上下文
├── context_appengine.go                    初始化defaultAppEngine 
├── context_test.go                         单元测试 
├── debug.go                                debug包装类
├── debug_test.go                           单元测试
├── deprecated.go                           绑定提示
├── deprecated_test.go                      单元测试
├── doc.go                                  
├── errors.go                               errors包装
├── errors_test.go                          单元测试
├── examples
│   └── README.md                           提示所有的example单独放在 https://github.com/gin-gonic/examples
├── fs.go                                   文件操作
├── gin.go                                  gin的主类
├── ginS                                    Gin的API实验
│   ├── README.md
│   └── gins.go
├── gin_integration_test.go                 集成测试
├── gin_test.go                             单元测试
├── githubapi_test.go                       单元测试
├── go.mod                                  Go Module
├── go.sum                                  Go Module生成的文件
├── internal                                内部类
│   ├── bytesconv                           Bytes和String转换
│   │   ├── bytesconv.go
│   │   └── bytesconv_test.go
│   └── json                                
│       ├── json.go                         json的包导出,感觉像是给包起别名
│       └── jsoniter.go
├── logger.go                               日志封装类
├── logger_test.go                          单元测试
├── middleware_test.go                      单元测试
├── mode.go                                 模式设置
├── mode_test.go                            单元测试
├── path.go                                 路径封装
├── path_test.go                            单元测试
├── recovery.go                             恢复
├── recovery_test.go                        单元测试  
├── render
│   ├── data.go
│   ├── html.go
│   ├── json.go
│   ├── msgpack.go
│   ├── protobuf.go
│   ├── reader.go
│   ├── reader_test.go
│   ├── redirect.go
│   ├── render.go
│   ├── render_msgpack_test.go
│   ├── render_test.go
│   ├── text.go
│   ├── xml.go
│   └── yaml.go
├── response_writer.go                      response封装
├── response_writer_test.go                 单元测试
├── routergroup.go                          路由组
├── routergroup_test.go                     单元测试
├── routes_test.go                          路由
├── test_helpers.go                         测试辅助类,用于返回测试的上下文
├── testdata                                测试数据
│   ├── certificate
│   │   ├── cert.pem
│   │   └── key.pem
│   ├── protoexample
│   │   ├── test.pb.go
│   │   └── test.proto
│   └── template
│       ├── hello.tmpl
│       └── raw.tmpl
├── tree.go                                 tree辅助类
├── tree_test.go                            单元测试
├── utils.go                                辅助类,用于key-bind和handler的wapper
├── utils_test.go                           单元测试
└── version.go                              当前版本号

外部依赖

说明
github.com/gin-contrib/sse Go中的服务器发送事件实现
服务器发送事件(SSE)是一种技术,浏览器通过HTTP连接从服务器接收自动更新。服务器发送事件EventSource API被W3C标准化为HTML5 [1]的一部分。
ggithub.com/go-playground/validator/v10 Go Struct and Field validation, including Cross Field, Cross Struct, Map, Slice and Array diving
github.com/golang/protobuf Go support for Google’s protocol buffers
github.com/json-iterator/go A high-performance 100% compatible drop-in replacement of “encoding/json”
github.com/mattn/go-isatty 判断文件描述符是不是一个终端
github.com/stretchr/testify A toolkit with common assertions and mocks that plays nicely with the standard library
github.com/ugorji/go/codec idiomatic codec and rpc lib for msgpack, cbor, json, etc. msgpack.org[Go]
gopkg.in/yaml.v2 Package yaml implements YAML support for the Go language

Wanglibing
Wanglibing
Engineer,Lifelong learner