gpt4 book ai didi

rest - 如何发出带有多个参数的post请求

转载 作者:数据小太阳 更新时间:2023-10-29 03:39:34 25 4
gpt4 key购买 nike

如何使用标准库在 Go 中发出 POST 请求以接收多个参数并在网页上输出信息。

用户输入姓名和最喜欢的爱好

姓名:

爱好:

提交(按钮)

然后网页更新显示

您的名字是(姓名)并且您喜欢(爱好)

最佳答案

您可以使用 html/template 执行此操作Go 标准库中的包。

这里的基本流程是:

  1. 编写模板(go/HTML模板语言)
  2. 读入模板(使用template.ParseFiles 或类似的)
  3. 听取请求
  4. 将来自相关请求的信息传递到您的模板(使用 ExecuteTemplate 或类似工具)

您可以将一个结构传递给 ExecuteTemplate,然后可以在您定义的模板中访问它(请参见下面的示例)。例如,如果您的结构有一个名为 Name 的字段,那么您可以使用 {{ .Name }} 在模板中访问此信息。

这是一个示例:

ma​​in.go:

主要包

import (
"log"
"encoding/json"
"html/template"
"net/http"
)

var tpl *template.Template

func init() {
// Read your template(s) into the program
tpl = template.Must(template.ParseFiles("index.gohtml"))
}

func main() {
// Set up routes
http.HandleFunc("/endpoint", EndpointHandler)
http.ListenAndServe(":8080", nil)
}

// define the expected structure of payloads
type Payload struct {
Name string `json:"name"`
Hobby string `json:"hobby"`
}

func EndpointHandler(w http.ResponseWriter, r *http.Request) {
// Read the body from the request into a Payload struct
var payload Payload
err := json.NewDecoder(r.Body).Decode(&payload)
if err != nil {
log.Fatal(err)
}

// Pass payload as the data to give to index.gohtml and write to your ResponseWriter
w.Header().Set("Content-Type", "text/html")
tpl.ExecuteTemplate(w, "index.gohtml", payload)
}

index.gohtml:

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<div>
<span>Your name is</span><span>{{ .Name }}</span>
</div>

<div>
<span>Your hobby is</span><span>{{ .Hobby }}</span>
</div>
</body>
</html>

示例:

有效载荷:

{
"name": "Ahmed",
"hobby": "devving"
}

响应:

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<div>
<span>Your name is</span>
<span>Ahmed</span>
</div>
<div>
<span>Your hobby is</span>
<span>devving</span>
</div>
</body>
</html>

请注意,这是非常脆弱的,因此您绝对应该添加更好的错误和边缘情况处理,但希望这是一个有用的起点。

关于rest - 如何发出带有多个参数的post请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54496660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com