go - 是否有一个包可以在 golang 中编码进出 x-www-form-urlencoded

标签 go marshalling urlencode unmarshalling

我想编码输入和输出 x-www-form-urlencoding,类似于使用 json 或 xml 的方法。是否有现有的包来执行此操作,或者是否有任何文档说明如果不存在如何自己实现一个包?

最佳答案

gorilla/schema很受欢迎并且维护良好:

例如

func FormHandler(w http.RequestWriter, r *http.Request) {

    err := r.ParseForm()
    if err != nil {
         // handle error
    }
    person := new(Person) // Person being a struct type
    decoder := schema.NewDecoder()

    err = decoder.Decode(person, r.Form)
    if err != nil {
         // handle error
    }

}

goforms也是一种选择。

2015 年 5 月 23 日更新:

  • gorilla/schema 仍然是我选择的最受支持的 map-to-struct 包之一,POST 表单值是一个常见的用例。
  • goji/param也相当可靠,并具有许多相同的功能。
  • mholt/binding以稍微复杂的 API 为代价(IMO)打包了更多功能。

我已经使用 gorilla/schema 几年了,没有遇到任何重大问题。我将它与 vala 结合使用用于在输入到 DB 之前验证输入(不是 nil、太短、太长等)。

关于go - 是否有一个包可以在 golang 中编码进出 x-www-form-urlencoded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22581248/

相关文章:

android - 在包裹中查找 Binder 对象

url - 在 URL 中,空格应该使用 %20 还是 + 进行编码?

c - ESP8266 Arduino 请求内容编码

c# - Web API 获取在 Controller 上进行 UrlEncoded 的请求参数

go - 范围超过结构数组的地址

go - 如何在 Go 中将 x509.Certificate 转换为 tls.Certificate?

go - 为什么我们需要使用 * 来修改基本数据类型的值而不是用户定义结构的值?

java - Android中保存ArrayList的Hashmap

go - 本地环境中的Go代码运行结果与go play中的运行结果不同

Java:使用 JaxB 编码到 XML,如何正确地进行多线程