从零到一:用Go语言构建你的第一个Web服务

打印 上一主题 下一主题

主题 843|帖子 843|积分 2529

使用Go语言从零开始搭建一个Web服务,包括环境搭建、路由处理、中间件使用、JSON和表单数据处理等关键步调,提供丰富的代码示例。
关注TechLead,复旦博士,分享云服务范畴全维度开发技术。拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,复旦机器人智能实验室成员,国家级大学生赛事评审专家,发表多篇SCI核心期刊学术论文,阿里云认证的资深架构师,上亿营收AI产品研发负责人。

环境搭建

在开始开发之前,我们需要确保当地环境已经安装了Go语言开发环境。
安装Go语言

可以从Go语言官网下载适合你操作系统的安装包,并按照官网的指南举行安装。
配置开发工具

保举使用VS Code或GoLand举行Go语言开发。以下是VS Code的配置步调:

  • 安装VS Code编辑器。
  • 安装Go插件:打开VS Code,进入插件市场,搜索并安装Go插件。
  • 配置Go开发环境:确保Go语言的安装路径已添加到系统环境变量中。
创建项目结构

创建一个新的项目文件夹,并初始化Go模块。
  1. mkdir simple-web-server
  2. cd simple-web-server
  3. go mod init simple-web-server
复制代码
创建HTTP服务器

我们将使用Go尺度库net/http来创建一个简朴的HTTP服务器。
引入须要的包

在项目根目录下创建一个名为main.go的文件,并引入须要的包。
  1. package main
  2. import (
  3.         "fmt"
  4.         "net/http"
  5. )
复制代码
创建简朴的HTTP处理函数

我们需要创建一个处理函数来响应HTTP请求。
  1. func helloHandler(w http.ResponseWriter, r *http.Request) {
  2.         fmt.Fprintf(w, "Hello, World!")
  3. }
复制代码
创建并启动HTTP服务器

在main函数中,我们将创建HTTP服务器并指定端口号。
  1. func main() {
  2.         http.HandleFunc("/", helloHandler) // 设置路由
  3.         fmt.Println("Starting server at port 8080")
  4.         if err := http.ListenAndServe(":8080", nil); err != nil {
  5.                 fmt.Println("Error starting server:", err)
  6.         }
  7. }
复制代码
完整的main.go文件如下:
  1. package main
  2. import (
  3.         "fmt"
  4.         "net/http"
  5. )func helloHandler(w http.ResponseWriter, r *http.Request) {
  6.         fmt.Fprintf(w, "Hello, World!")
  7. }func main() {
  8.         http.HandleFunc("/", helloHandler) // 设置路由
  9.         fmt.Println("Starting server at port 8080")
  10.         if err := http.ListenAndServe(":8080", nil); err != nil {
  11.                 fmt.Println("Error starting server:", err)
  12.         }
  13. }
复制代码
运行服务器

在终端中运行以下命令来启动服务器:
  1. go run main.go
复制代码
打开浏览器,访问http://localhost:8080,你将看到页面表现“Hello, World!”。
路由与请求处理

我们将扩展HTTP服务器,增加更多的路由和处理函数。
添加新的路由

添加一个新的处理函数来处理/greet路径的请求。
  1. func greetHandler(w http.ResponseWriter, r *http.Request) {
  2.         name := r.URL.Query().Get("name")
  3.         if name == "" {
  4.                 name = "Guest"
  5.         }
  6.         fmt.Fprintf(w, "Hello, %s!", name)
  7. }
复制代码
注册新的路由

在main函数中注册新的路由:
  1. func main() {
  2.         http.HandleFunc("/", helloHandler)      // 设置根路径路由
  3.         http.HandleFunc("/greet", greetHandler) // 设置/greet路径路由
  4.         fmt.Println("Starting server at port 8080")
  5.         if err := http.ListenAndServe(":8080", nil); err != nil {
  6.                 fmt.Println("Error starting server:", err)
  7.         }
  8. }
复制代码
测试新的路由

重新启动服务器,并访问http://localhost:8080/greet?name=Go,页面将表现“Hello, Go!”。
处理表单数据

我们将扩展服务器以处理POST请求和表单数据。
创建HTML表单

添加一个新的处理函数来表现HTML表单:
  1. func formHandler(w http.ResponseWriter, r *http.Request) {
  2.         html := `<html><body>
  3.         <form method="POST" action="/submit">
  4.                 <label for="name">Name:</label>
  5.                 <input type="text" id="name" name="name">
  6.                 <input type="submit" value="Submit">
  7.         </form>
  8.         </body></html>`
  9.         fmt.Fprintf(w, html)
  10. }
复制代码
处理表单提交

添加一个新的处理函数来处理表单提交:
  1. func submitHandler(w http.ResponseWriter, r *http.Request) {
  2.         if r.Method != http.MethodPost {
  3.                 http.Error(w, "Invalid request method", http.StatusMethodNotAllowed)
  4.                 return
  5.         }
  6.         name := r.FormValue("name")
  7.         fmt.Fprintf(w, "Form submitted! Hello, %s!", name)
  8. }
复制代码
注册新的路由

在main函数中注册新的路由:
  1. func main() {
  2.         http.HandleFunc("/", helloHandler)      // 设置根路径路由
  3.         http.HandleFunc("/greet", greetHandler) // 设置/greet路径路由
  4.         http.HandleFunc("/form", formHandler)   // 设置/form路径路由
  5.         http.HandleFunc("/submit", submitHandler) // 设置/submit路径路由
  6.         fmt.Println("Starting server at port 8080")
  7.         if err := http.ListenAndServe(":8080", nil); err != nil {
  8.                 fmt.Println("Error starting server:", err)
  9.         }
  10. }
复制代码
测试表单功能

重新启动服务器,并访问http://localhost:8080/form,填写表单并提交,页面将表现“Form submitted! Hello, [你的名字]!”
通过以上步调,我们已经成功创建了一个简朴的Go Web服务,并实现了路由处理和表单数据处理。
如有资助,请多关注
TeahLead KrisChang,10+年的互联网和人工智能从业经验,10年+技术和业务团队管理经验,同济软件工程本科,复旦工程管理硕士,阿里云认证云服务资深架构师,上亿营收AI产品业务负责人。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

温锦文欧普厨电及净水器总代理

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表