一文搞懂Go快速搭建HTTP服务

简介: 一文搞懂Go快速搭建HTTP服务

第一个http程序:Hello World

package main
import "net/http"
//最简单的HTTP服务
func RunHttp1() {
   http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
      w.Write([]byte("Hello Http!"))
   })
   http.ListenAndServe(":8080", nil)
}
func main() {
   RunHttp1()
}

PostMan测试:

一般请求

一般参数请求:
package main
import (
  "fmt"
  "net/http"
)
func GetMethod1() {
   http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
      //获取参数
      str := r.URL.Query().Get("str")
      fmt.Println("Get Method Str is " + str)
      w.Write([]byte("Hello Http Get!"))
   })
   http.ListenAndServe(":8080", nil)
}
func main() {
  GetMethod1()
}

测试:

表单请求
package main
import (
   "fmt"
   "net/http"
   "strconv"
)
type Student struct {
   Name string
   Age  int
}
func GetMethod2() {
   http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
      //获取参数
      name := r.URL.Query().Get("name")
      age := r.URL.Query().Get("age")
      //将string类型转为int类型
      ageStr, err := strconv.Atoi(age)
      if err != nil {
         fmt.Println("err...")
      }
      stu := Student{Name: name, Age: ageStr}
      fmt.Println("Get Method Str is ", stu)
      w.Write([]byte("Hello Http Get Form!"))
   })
   http.ListenAndServe(":8080", nil)
}
func main() {
   GetMethod2()
}

JSON格式的HTTP报文

package main
import (
   "encoding/json"
   "fmt"
   "io/ioutil"
   "net/http"
)
//自定义结构体 对应JSON结构体
type Student struct {
   Id   int64  `json:"id"`
   Name string `json:"name"`
   Age  int    `json:"age"`
}
func TakeJSON() {
   http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
      //获取请求方法
      fmt.Println("req method : ", r.Method)
      //获取请求题
      body, err := ioutil.ReadAll(r.Body)
      if err != nil {
         fmt.Printf("获取请求体错误 , %v\n", err)
         return
      }
      fmt.Println("请求体 :", string(body))
      //将请求的JSON转化为结构体
      var stu Student
      if err = json.Unmarshal(body, &stu); err != nil {
         fmt.Printf("反序列化失败 , %v\n", err)
         return
      }
      fmt.Printf("反序列化成功,JSON解析结果 %+v", stu)
      w.Write([]byte("Hello Http Get Form!"))
   })
   http.ListenAndServe(":8080", nil)
}
func main() {
   TakeJSON()
}
相关文章
|
1月前
|
运维 网络协议 安全
长连接网关技术专题(十):百度基于Go的千万级统一长连接服务架构实践
本文将介绍百度基于golang实现的统一长连接服务,从统一长连接功能实现和性能优化等角度,描述了其在设计、开发和维护过程中面临的问题和挑战,并重点介绍了解决相关问题和挑战的方案和实践经验。
74 1
|
1月前
|
负载均衡 Java 中间件
使用Go语言构建高性能Web服务
Go语言作为一种快速、高效的编程语言,其在构建高性能Web服务方面具有独特优势。本文将探讨如何利用Go语言开发和优化Web服务,以实现更高的性能和可伸缩性。
|
1月前
|
Web App开发 监控 Java
|
1月前
|
安全 中间件 Go
Go语言Web服务性能优化与安全实践
【2月更文挑战第21天】本文将深入探讨Go语言在Web服务性能优化与安全实践方面的应用。通过介绍性能优化策略、并发编程模型以及安全加固措施,帮助读者理解并提升Go语言Web服务的性能表现与安全防护能力。
|
1月前
|
存储 JSON Go
ElasticSearch的HTTP操作 和Go客户端
【2月更文挑战第13天】ElasticSearch的HTTP操作 和Go客户端操作
39 0
|
1月前
|
JSON Go API
Go语言网络编程:HTTP客户端开发实战
【2月更文挑战第12天】本文将深入探讨使用Go语言开发HTTP客户端的技术细节,包括发送GET和POST请求、处理响应、错误处理、设置请求头、使用Cookie等方面。通过实例演示和代码解析,帮助读者掌握构建高效、可靠的HTTP客户端的关键技术。
|
1月前
|
JSON 缓存 中间件
Go语言网络编程:深入探索HTTP服务器开发
【2月更文挑战第12天】本文将详细探讨使用Go语言开发HTTP服务器的过程,包括HTTP协议的理解、Go标准库中`net/http`包的使用、路由处理、中间件、静态文件服务、JSON处理以及性能优化等方面。通过本文,读者将能够掌握构建高效、可扩展HTTP服务器的关键技术。
|
2月前
|
XML 自然语言处理 前端开发
NLP自学习平台提供了API接口调用服务,这些接口可以通过HTTP GET请求进行调用
【2月更文挑战第7天】NLP自学习平台提供了API接口调用服务,这些接口可以通过HTTP GET请求进行调用
17 2
|
2月前
|
XML JSON 中间件
快速入门Gin框架搭建HTTP服务
快速入门Gin框架搭建HTTP服务
19 0
|
Go 调度 Python
golang 服务平滑重启小结
背景 golang 程序平滑重启框架 supervisor 出现 defunct 原因 使用 master/worker 模式 背景 在业务快速增长中,前期只是验证模式是否可行,初期忽略程序发布重启带来的暂短停机影响。
1563 0