在Golang中处理GET和POST请求的示例

ParseForm 填充r.Form和r.PostForm。
For all requests, ParseForm parses the raw query from the URL 和 updates r.Form.

用户提交的表单详细信息存储在2个变量名称和地址中。
HTML表单有2个输入框的名称和地址。
创建两个不同的文件 form.htmlmain.go
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8" />
</head>
<body>
<div>
  <form method="POST" action="/">     
      <label>Name</label><input name="name" type="text" value="" />
      <label>Address</label><input name="address" type="text" value="" />
      <input type="submit" value="submit" />
  </form>
</div>
</body>
</html>
package main

import (
	"fmt"
	"log"
	"net/http"
)
func hello(w http.ResponseWriter, r *http.Request) {
	if r.URL.Path != "/" {
		http.Error(w, "404 not found.", http.StatusNotFound)
		return
	}

	switch r.Method {
	case "GET":		
		 http.ServeFile(w, r, "form.html")
	case "POST":
		// Call ParseForm() to parse the raw query 和  update r.PostForm 和  r.Form.
		if err := r.ParseForm(); err != nil {
			fmt.Fprintf(w, "ParseForm() err: %v", err)
			return
		}
		fmt.Fprintf(w, "Post from website! r.PostFrom = %v\n", r.PostForm)
		name := r.FormValue("name")
		address := r.FormValue("address")
		fmt.Fprintf(w, "Name = %s\n", name)
		fmt.Fprintf(w, "Address = %s\n", address)
	default:
		fmt.Fprintf(w, "Sorry, only GET 和  POST methods are supported.")
	}
}

func main() {
	http.HandleFunc("/", hello)

	fmt.Printf("Starting server for testing HTTP POST...\n")
	if err := http.ListenAndServe(":8080", nil); err != nil {
		log.Fatal(err)
	}
}
您需要运行main.go,然后在浏览器中运行。
Run url http://localhost:8080/ in your browser 和 see the below content




提交表格后

您必须阅读的解决方案

指针&和*和**在Golang中如何工作?

下面的程序是指针的咖喱。 intVar的值等于** pointerToPointerVar的值。

在Golang中创建和打印多维切片

这是切片中的多维,用于存储切片中的内部。因此,切片中的每个元素在切片中都是另一个。这是多维切片的简短声明。

怎么把Colorful PNG image转换成灰度?

解码功能对以注册格式编码的图像进行解码。 RGBA是内存中的图像,其At方法返回color.RGBA值。

如何在Go中将字符串转换为浮点类型?

ParseFloat将字符串s转换为由bitSize指定的精度的浮点数:float32为32或float64为64。当bitSize = 32时,结果仍为float64类型,但可以将其转换为float32而无需更改其值。

如何使用另一个文件golang中的功能?

此示例旨在详细演示函数的各种调用。您将学习在主程序包中创建和调用自定义程序包功能。您还可以使用别名从另一个包中调用自定义包的功能。

示例:如何在Golang中使用IO包中的ReadAtLeast?

ReadAtLeast从r读取到buf,直到它至少读取了最小字节。当由于EOF而无法读取最小值时,它会返回特定错误以表示特定情况。

示例:RUNTIME程序包中的堆栈和调用者

堆栈将调用goroutine的堆栈跟踪格式格式化为Slice,并返回写入Slice的字节数。调用方报告有关调用goroutine堆栈上的函数调用的文件和行号信息。

Go编程语言中的Sierpinski地毯

示例:如何在Golang中使用IO包中的TeeReader?

TeeReader返回一个Reader,该Reader向w写入从r读取的内容。通过r执行的所有r读取都与对w的相应写入匹配。

Golang将字符串转换为Snake大小写