首页
学习
活动
专区
圈层
工具
发布

Go HTTP 编程 | 01 - 使用 http 包创建 Web 服务器

一、Go 的 HTTP 标准库 net/http Go 已经拥有成熟的 HTTP 标准库 net/http,即使不使用 Go 的 Web 框架如 Gin、Iris 等也可以快速的搭建起一个可以运行的 Web...使用 net/http 建立 Web 服务器 首先创建一个请求处理函数 sayHelloHandler,该函数接收一个 http.ResponseWriter 和 一个请求指针 *http.Request...package main // filename main.go //noinspection ALL import ( "fmt" "log" "net/http" "strings...HTTP") } 在浏览器中输入 http://localhost:9000/ 控制台打印出的详细信息 net/http 运行机制 net/http 运行流程: 创建 Listen Socket...该函数中的 for 循环首先通过 net.Listener 接收请求 rw, err := l.Accept(),for 循环之后又创建了一个 Conn,最后单独开了一个 goroutine go c.serve

1.4K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    手把手,带你从零封装Gin框架(二):配置初始化 & 全局变量

    这里我使用 viper 作为配置管理方案,它支持 JSON、TOML、YAML、HCL、envfile、Java properties 等多种格式的配置文件,并且能够监听配置文件的修改,进行热重载,详细介绍大家可以去官方文档查看...安装 go get -u github.com/spf13/viper 编写配置文件 在项目根目录下新建一个文件 config.yaml ,初期先将项目的基本配置放入,后续我们会添加更多配置信息 app...中的配置名称, viper 会根据标签 value 值把 config.yaml 的数据赋予给结构体 全局变量 新建 global/app.go 文件,定义 Application 结构体,用来存放一些项目启动时的变量...} var App = new(Application) 使用 viper 载入配置 新建 bootstrap/config.go 文件,编写代码: package bootstrap import..."github.com/gin-gonic/gin" "jassue-gin/bootstrap" "jassue-gin/global" "net/http" ) func

    3K11

    Go语言微服务框架 - 2.实现加载静态配置文件

    /demo --config=a.yaml --http_port=8080 --grpc_port=8081,Go语言中自带flag包可供解析,开源的有pflag和相关的扩展工具,如cobra。...2.github.com/spf13/viper的介绍 对比上面的方案,我们来看一个业内使用最广的Go语言配置加载库github.com/spf13/viper的实现,对应的代码如下: viper.SetConfigName...例如,我们将服务的端口改造到配置文件里,就成了: server: http: port: 8081 grpc: port: 8082 对应的Go语言代码为: viper.GetInt...type Viper.AddConfigPath(configFilePath) // config file path return Viper.ReadInConfig() } 配置使用方...config.Viper.GetInt("server.grpc.port") 使用viper库的注意事项 在使用viper获取配置时,我们需要手动组装key,也就是"{level1}.

    1.6K10

    Viper,一个Go语言配置管理神器!

    在 Go 语言中,Viper 是一个功能强大且广泛使用的配置管理库,它支持从多个来源读取配置,包括文件、环境变量、远程配置中心等。...多层次的配置来源:Viper 可以从配置文件、环境变量、命令行参数、远程配置中心、默认值等多个来源读取配置。支持动态配置:可以监控和热更新远程配置中心的配置。...: "password"通过以下代码,可以轻松读取并使用这个配置:package viper_demoimport ("fmt""github.com/davecgh/go-spew/spew""github.com...() {err := viper.AddRemoteProvider("consul", "http://127.0.0.1:8500", "/config/local_config")if err !...这里的 "/config/local_config" 是存储配置的路径。配置文件类型:必须使用 viper.SetConfigType("yaml") 明确指定配置文件的类型。

    38710

    go库介绍:Golang中的Viper库

    在这方面,Viper库无疑是Go生态系统中的一颗璀璨明珠。本文将详细介绍Viper库及其使用场景,并通过具体示例展示其强大功能。...二、安装和使用Viper安装Viper首先,确保你的环境已安装Go,然后通过以下命令安装Viper:bash 代码解读复制代码go get -u github.com/spf13/viper初始化Viper...虽然Viper默认提供了一个全局实例,但你也可以通过viper.New()创建新的实例。...例如:go 代码解读复制代码viper.SetConfigFile("config")viper.SetConfigType("yaml")viper.AddConfigPath(".")读取配置文件使用...例如:go 代码解读复制代码viper.SetDefault("ContentDir", "content")动态监听配置变化Viper的另一个强大功能是能够动态监听配置文件的变化,并在配置更新时自动加载新的配置

    1.3K10

    在.NET 6 中如何创建和使用 HTTP 客户端 SDK

    在这篇文章中,我将分享在.NET 6 中创建和使用 HTTP 客户端 SDK 的方方面面。 客户端 SDK 在远程服务之上提供了一个有意义的抽象层。本质上,它允许进行远程过程调用(RPC)。...API 会使用 JSON,这就是为什么从.NET 5 开始,BCL 增加了System.Net.Http.Json命名空间。...如果没有什么复杂的特殊需求,我建议你使用System.Net.Http.Json,因为它能让你免于编写模板代码。那不仅很枯燥,而且也很难保证高效、没有 Bug。...官方文档将 HttpClientFactory 描述为“一个专门用于创建可在应用程序中使用的 HttpClient 实例的工厂”。我们稍后将介绍如何使用它。...5 使用声明式方法编写 HTTP 客户端 SDK 代码越少,Bug 越少。Refit 是一个用于.NET 的、自动化的、类型安全的 REST 库。它将 REST API 变成一个随时可用的接口。

    13.9K20

    Go 项目配置的定制化和一体化打包方案

    这里我们需要用到一个Go语言写的开源库使用Viper,选用Viper主要原因是支持它支持从项目文件、远端ETCD和Consul中读取配置,兼容性更高一些。...另外两个boostrap.go 和 config.go 是下面使用Viper读取加载配置时用到的。...使用 Viper 加载和读取配置 项目安装 Viper 依赖 go get github.com/spf13/viper@v1.12.0 为了兼容性,选择一个稍旧的版本,viper@v1.12.0 后面的版本会不支持...", func(c *gin.Context) { database := config.Database c.JSON(http.StatusOK, gin.H{ "type":...关于这个问题怎么解决,怎么让Go程序真的变成“一次编译到处运行”,以及如何让Viper使用Etcd作为远程配置中心,欢迎订阅专栏,加入我们的项目,项目中会通过Github Issue来记录和解答项目开发过程中大家提的各种问题

    38610

    在 Golang 项目中使用 Spring Cloud Config Server 管理配置

    因此我们的架构就像下面这样: Git: 储存具体的配置文件, 并且负责配置版本管理 Spring Cloud Config Server:提供配置的查询接口 Go App:从配置中心载入配置并使用 简单的搜索服务...在 Go 应用中读取配置 最后就是在应用中使用 Spring Cloud Config Server 中的配置了。...如果是基于 Spring Boot 的应用可以直接使用 spring-cloud-config-client 加载配置。在 Go 中就需要稍微写点代码了,不过并不多。...(":8081", nil)) 10} 总结 我们通过 Git + Spring Could Config Server + Viper + 少量 Go 代码, 实现了基于配置中心的配置管理及使用 我们甚至可以在...Go 中使用类似于 Spring Boot 的 Profile 管理, 对比下: http://localhost:8080/config/go-app-default.yml http://localhost

    2.1K40

    从25W到50W:我帮400+学员突破Go职业瓶颈的10个实战心法

    例如,JSON处理在多数场景下标准库已足够;HTTP服务方面,简单API可用标准库net/http,复杂路由场景再考虑Gin、Echo等框架。...高标准实践是:使用Zap进行结构化日志记录(高性能、支持调用栈),使用Viper管理配置(支持多环境、热更新)。 // 1....Viper配置初始化 func InitConfig() { viper.SetConfigName("config") // 配置文件名为 config.yaml viper.SetConfigType...// 导入pprof(生产环境需注意访问控制) import _ "net/http/pprof" func main() { // 启动pprof服务(绑定到本地回环,避免外部访问)...seconds=30 # 查看内存使用情况 go tool pprof http://127.0.0.1:6060/debug/pprof/heap # 查看goroutine数量及堆栈 go tool

    11310

    基于 Go 语言开发在线论坛增补篇:通过 Viper 读取配置文件并实现热加载

    viper 简介 之前我们在论坛项目中使用了单例模式全局加载配置文件,这样做有一个弊端,就是不支持热加载,每次修改配置文件,需要重启应用,不太灵活,所以这篇教程我们引入 Viper 重构配置读取逻辑,并支持配置文件的热加载...目前已经有很多知名 Go 项目在使用 Viper 作为配置解决方案,包括 Hugo、Docker Notary、Nanobox、EMC REX-Ray、BloomApi、doctl、Mercure 等。...使用 Viper 加载配置 开始之前,先安装 Viper 扩展包: go get github.com/spf13/viper 然后,我们在 config 目录下创建 viper.go 来定义基于 Viper...(&ViperConfig) 将其映射到之前定义的位于 config.go 中的 Configuration 结构体变量 ViperConfig。...通过 Viper 实现热加载 但是现在配置文件依然不支持热加载,不过 Viper 提供了对应的 API 方法实现该功能,我们打开 config/viper.go,在 init 方法最后加上如下这段代码:

    2.2K40
    领券