当前位置: 首页 > 面试题库 >

在Go中处理JSON发布请求

谢选
2023-03-14
问题内容

因此,我得到了以下内容,这些内容似乎难以置信,我一直在想自己Go的库设计得比此更好,但是我找不到Go处理JSON数据POST请求的示例。它们都是POST形式。

这是一个示例请求: curl -X POST -d "{\"test\": \"that\"}" http://localhost:8082/test

这是代码,其中嵌入了日志:

package main

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

type test_struct struct {
    Test string
}

func test(rw http.ResponseWriter, req *http.Request) {
    req.ParseForm()
    log.Println(req.Form)
    //LOG: map[{"test": "that"}:[]]
    var t test_struct
    for key, _ := range req.Form {
        log.Println(key)
        //LOG: {"test": "that"}
        err := json.Unmarshal([]byte(key), &t)
        if err != nil {
            log.Println(err.Error())
        }
    }
    log.Println(t.Test)
    //LOG: that
}

func main() {
    http.HandleFunc("/test", test)
    log.Fatal(http.ListenAndServe(":8082", nil))
}

必须有更好的方法,对吗?我只是为寻找最佳实践而感到困惑。

(Go在搜索引擎中也被称为Golang,在这里提到它,以便其他人可以找到它。)


问题答案:

请使用json.Decoder代替json.Unmarshal

func test(rw http.ResponseWriter, req *http.Request) {
    decoder := json.NewDecoder(req.Body)
    var t test_struct
    err := decoder.Decode(&t)
    if err != nil {
        panic(err)
    }
    log.Println(t.Test)
}


 类似资料:
  • 因此,我有以下内容,这似乎令人难以置信的骇客,我一直在想,Go有比这更好的设计库,但我找不到Go处理JSON数据POST请求的例子。它们都是表格帖子。 下面是一个示例请求: 下面是嵌入日志的代码: 肯定有更好的办法,对吧?我只是很难找到最好的做法。 对搜索引擎来说,Go也被称为Golang,这里提到了它,这样其他人就可以找到它。)

  • 问题内容: 进行Ajax调用时,将contentType设置为application / json而不是默认的x-www-form- urlencoded时,服务器端(在PHP中)无法获取post参数。 在以下工作示例中,如果我在ajax请求中将contentType设置为“ application / json”,则PHP $ _POST将为空。为什么会这样?我如何在PHP中正确处理conten

  • 我有一个Java动态web项目(部署在本地应用服务器Tomcat 7上),它使用Jersey创建REST API。 我不使用任何构建自动化工具(所以我的库被添加到构建路径中,servlet被插入到web.xml文件中)。 我正在使用的库包括: 我的web.xml如下: 应用程序正在与MySQL数据库交互。场景如下:数据库包含一个名为user的用户帐户表。列是id、name、username和密码。

  • 发布处理原理 Erlang编程语言的一个很重要的特点是能在运行时变更模块代码,即Erlang参考手册中所描述的代码替换。 基于这个功能,OTP应用SASL提供了一个用于在运行时对整个发布的不同版本之间进行升级和降级的框架。这就是我们称之为发布处理的东西。 该框架由用于生成脚本和构建发布包的离线支持工具( systools )和用于解压和安装发布包的在线支持工具( release_handler )

  • 问题内容: 进行Ajax调用时,将contentType设置为application / json而不是默认的x-www-form- urlencoded时,服务器端(在PHP中)无法获取post参数。 在以下工作示例中,如果我在ajax请求中将contentType设置为“ application / json”,则PHP $ _POST将为空。为什么会这样?如何在PHP中正确处理content

  • 我正在使用截击库。我有以下API urlhttp://example.com/project/contriller/并且需要将json请求作为body发布到它。 如何使用截击发送?