我有一个使用htmx的表单,试图将第一个输入的输入值发送到Gin服务器

<form hx-post="/addToDo" hx-ext="json-enc" hx-trigger="submit" hx-target="#todos" hx-swap="outerHTML">
    <input type="text" placeholder="todo" name="todo" />
    <input type="submit" />
</form>

<ol id="todos"></ol>

Gin服务器

r.POST("/addToDo", func(c *gin.Context) {
    fmt.Println(c.Request.Body)
    // ^this prints "&{0xc0000b2000 <nil> <nil> false true {0 0} false false false 0xeaee20}"

    jsonData, err := ioutil.ReadAll(c.Request.Body)

    if err != nil {
        fmt.Println("something went wrong here boys")
        return
    }

    fmt.Println(jsonData)
    // ^this prints "[116 111 100 111 61 104 101 108 108 111]"
})

我想过让POST请求URL包含输入值作为参数,但我相当肯定在请求正文中有一种方法可以做到这一点,我只是遗漏了一些东西.如何获取请求正文或查询"TODO"输入?

推荐答案

我认为您只是得到了一个作为[]字节的字符串.

  a := []byte{116, 111, 100, 111, 61, 104, 101, 108, 108, 111}
  fmt.Print(string(a))

todo=hello

我认为您不需要自己解析这个todo=Hello.您只需使用:

https://pkg.go.dev/net/http#Request.FormValue

Go相关问答推荐

有没有更简单的方法在Go中编写这个逻辑?

Go PQ驱动程序无法使用默认架构进行查询

错误.如果它包含切片,则返回FALSE

GO框架Echo中间件的使用

go aws-lambda 与 terraform 中的 exec 格式错误

如何确定泛型类型在运行时是否可比较?

如何在 zap 记录器库中使用自定义时间函数

是否需要手动调用rand.Seed?

Kperf 构建失败

如何根据地址和大小打印字符串

Golang校验器包:重命名字段错误处理

如何用mpb创建两行进度条?

由于 main.go 文件中的本地包导入导致构建 docker 容器时出错

golang yaml 马歇尔网址

不能使用 mockDB(*MockDB 类型的变量)作为 struct 文字中的 *gorm.DB 值

为什么 `append(x[:0:0], x...)` 将切片复制到 Go 中的新后备数组中?

具有两个或多个模型的 GORM 查询

如果服务器在客户端的 gRPC 中不可用,则等待的方法

每 N 秒运行一次函数,上下文超时

在 golang 中联合一个接口和类型