huizhou92

huizhou92

tech

Golang http 支持 NegotiateFormat

Go 标准库提案:更优雅的 HTTP 内容协商 背景 在 Web 开发中,HTTP 内容协商(Content Negotiation)是一项重要的机制,它允许客户端和服务器就响应内容的最佳格式达成一致。例如,手机端可能希望接收 JSON 格式的数据,Web端可能想要XML格式的数据,服务端可以在一个接口中提供多种数据格式。客户端通过 Accept 请求头表达自己的偏好,服务端根据这些偏好选择最合适的格式返回。 具体内容可以参考RFC9110 比如在下面的例子中,使用Gin框架自己实现的内容协商 。在一个API接口中返回了JSON和XML两种格式。 package main import ( "net/http" "github.com/gin-gonic/gin" ) type User struct { Name string `json:"

By huizhou92

tech

Go1.24: 除了标准库之外,您也许应该更加关注 Go 工具的变化

Go 1.24 引入了许多工具方面的重要更新,这些更新让开发者在管理依赖、调试问题以及编写更高质量代码时变得更加高效。尽管人们通常会将注意力集中在标准库或语言特性上的变化,但 Go 工具生态系统的改进同样值得关注。在本文中,我们将重点探讨两个关键领域的改进:go tool和vet工具,并通过实际示例展示这些更新如何优化你的工作流程。 Go 命令的增强功能 在 Go 1.24 中,go 命令进行了多项改进,使得依赖管理和工具执行更加高效且易于使用。其中最显著的变化之一是 go.mod 文件中新增了 tool 指令,允许你直接跟踪可执行工具依赖,而无需依赖诸如空导入等不直观的解决方案。 使用 Tool 指令跟踪可执行工具依赖 我们在项目中大量使用mockery[1](一个流行的 Mock 代码生成器),使用方式是通过brew 安装或者直接下载特定版本的exe 执行文件。但是这样有个问题,如果不同开发者使用的mockery 版本不一致,会造成非预期的代码冲突。在过去,如果您想将这样的工具作为项目的一部分,

By huizhou92