Golang语言 Gin框架环境配置、报错处理、接口调用、配置和日志管理|Go主题月

简介: Gin框架环境配置、报错处理、接口调用、配置和日志管理

安装:
下载并安装


go get -u github.com/gin-gonic/gin


安装失败的话,直接打开 github.com/gin-gonic/gin,下载压缩包,并在GOPATH路径的src目录下面建立github.com,解压到这个目录下面;




遇到的报错信息:

Go 项目编译:cannot find package "." in:***

将缺少依赖的包重新安装一次即可解决问题。

go: inconsistent vendoring in xxx报错



修改GOPAHT,改到非GOROOT路径。GOROOT是GO语言安装路径,GOPATH是GO语言编译环境所需路径,因此二者不能为同一路径




新建项目



在GOPATH目录下面的src下面新建一个文件夹app,使用命令

go mod init


新建 main.go,写出我们的第一个程序

package main
import "github.com/gin-gonic/gin"
func main() {
  r := gin.Default()
  r.GET("/", func(c *gin.Context) {
    c.JSON(200, gin.H{
      "name": "叫我詹躲躲",
      "gend": "男",
    })
  })
  r.Run(":8080")
}


运行程序



go run main.go



浏览器运行:


生成JSON




func AsciiJSON() {
  r := gin.Default()
  r.GET("/", func(c *gin.Context) {
    c.JSON(200, gin.H{
      "name": "叫我詹躲躲",
      "gend": "男",
    })
  })
  r.Run(":8080")
}


调用


package main
import (
  "app/function"
  "github.com/gin-gonic/gin"
)
func main() {
  //使用AsciiJSON生成带有转义的非ASCII字符的纯ASCII JSON。
  function.AsciiJSON()
}



测试get请求

绑定表单数据请求与自定义结构

//绑定表单数据请求与自定义结构
type StructA struct {
  FieldA string `form:"field_a"`
}
type StructB struct {
  NestedStruct StructA
  FieldB       string `form:"field_b"`
}
//get请求
func GetFormData(c *gin.Context) {
  var b StructB
  c.Bind(&b)
  c.JSON(200, gin.H{
    "a": b.NestedStruct,
    "b": b.FieldB,
  })
}


调用

package main
import (
  "app/function"
  "github.com/gin-gonic/gin"
)
func main() {
  //将表单数据请求与自定义结构绑定
  r := gin.Default()
  //测试get请求
  r.GET("/getFormData", function.GetFormData)
  r.Run()
}




查询返回信息

//绑定查询字符串或发布数据
type PersonInfo struct {
  Name    string `form:"name"`
  Address string `form:"address"`
  Memo    string `form:"memo"`
}
//返回信息
func QueryInfo(c *gin.Context) {
  var person PersonInfo
  if c.ShouldBind(&person) == nil {
    log.Println(person.Name)
    log.Println(person.Address)
    log.Println(person.Memo)
  }
  c.String(200, "Success")
}


调用

 
         




自定义HTTP配置

http.ListenAndServe(":8080", router)


或者

s := &http.Server{
  Addr:           ":8080",
  Handler:        router,
  ReadTimeout:    10 * time.Second,
  WriteTimeout:   10 * time.Second,
  MaxHeaderBytes: 1 << 20,
}
s.ListenAndServe()


自定义日志文件

router := gin.New()
router.Use(gin.LoggerWithFormatter(func(param gin.LogFormatterParams) string {
  return fmt.Sprintf("%s - [%s] \"%s %s %s %d %s \"%s\" %s\"\n",
      param.ClientIP,
      param.TimeStamp.Format(time.RFC1123),
      param.Method,
      param.Path,
      param.Request.Proto,
      param.StatusCode,
      param.Latency,
      param.Request.UserAgent(),
      param.ErrorMessage,
  )
}))
router.Use(gin.Recovery())
router.GET("/ping", func(c *gin.Context) {
  c.String(200, "pong")
})
router.Run(":8080
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
7月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
550 0
|
8月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
1401 5
|
安全 BI 网络安全
EventLog Analyzer 如何满足等保合规要求?密码有效期、产品日志保留、配置备份三大核心问题全面解答
EventLog Analyzer(ELA)助力企业满足网络安全等级保护要求,支持配置自动/手动备份、日志180天留存及密码策略管理,提升合规性与安全运营效率。
252 0
|
11月前
|
存储 NoSQL MongoDB
Docker中安装MongoDB并配置数据、日志、配置文件持久化。
现在,你有了一个运行在Docker中的MongoDB,它拥有自己的小空间,对高楼大厦的崩塌视而不见(会话丢失和数据不持久化的问题)。这个MongoDB的数据、日志、配置文件都会妥妥地保存在你为它精心准备的地方,天旋地转,它也不会失去一丁点儿宝贵的记忆(即使在容器重启后)。
1268 4
|
10月前
|
JSON 安全 Go
Go语言项目工程化 —— 日志、配置、错误处理规范
本章详解Go语言项目工程化核心规范,涵盖日志、配置与错误处理三大关键领域。在日志方面,强调其在问题排查、性能优化和安全审计中的作用,推荐使用高性能结构化日志库zap,并介绍日志级别与结构化输出的最佳实践。配置管理部分讨论了配置分离的必要性,对比多种配置格式如JSON、YAML及环境变量,并提供viper库实现多环境配置的示例。错误处理部分阐述Go语言显式返回error的设计哲学,讲解标准处理方式、自定义错误类型、错误封装与堆栈追踪技巧,并提出按调用层级进行错误处理的建议。最后,总结各模块的工程化最佳实践,助力构建可维护、可观测且健壮的Go应用。
|
存储 监控 API
【Azure App Service】分享使用Python Code获取App Service的服务器日志记录管理配置信息
本文介绍了如何通过Python代码获取App Service中“Web服务器日志记录”的配置状态。借助`azure-mgmt-web` SDK,可通过初始化`WebSiteManagementClient`对象、调用`get_configuration`方法来查看`http_logging_enabled`的值,从而判断日志记录是否启用及存储方式(关闭、存储或文件系统)。示例代码详细展示了实现步骤,并附有执行结果与官方文档参考链接,帮助开发者快速定位和解决问题。
339 22
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
7月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
366 3
|
9月前
|
Cloud Native 安全 Java
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
542 1
|
11月前
|
开发框架 JSON 中间件
Go语言Web开发框架实践:路由、中间件、参数校验
Gin框架以其极简风格、强大路由管理、灵活中间件机制及参数绑定校验系统著称。本文详解其核心功能:1) 路由管理,支持分组与路径参数;2) 中间件机制,实现全局与局部控制;3) 参数绑定,涵盖多种来源;4) 结构体绑定与字段校验,确保数据合法性;5) 自定义校验器扩展功能;6) 统一错误处理提升用户体验。Gin以清晰模块化、流程可控及自动化校验等优势,成为开发者的优选工具。

热门文章

最新文章

推荐镜像

更多