当前位置: 首页 > 知识库问答 >
问题:

在Go的超文本传输协议包中,如何获取POST请求的查询字符串?

阎弘
2023-03-14

我正在使用Go的http包来处理POST请求。如何从请求对象访问和解析查询字符串的内容?我从官方文件中找不到答案。

共有3个答案

司寇昱
2023-03-14

下面是一个例子:

value := r.FormValue("field")

有关更多信息。关于超文本传输协议包,您可以在此处访问它的留档。FormValue基本上返回POST或PUT值,或GET值,按此顺序,它找到的第一个。

邬友樵
2023-03-14

下面是一个关于如何获取参数的更具体示例。Request对象有一个方法可以为您解析它们,称为Query:

假设请求URL为http://host:port/something?param1=b

func newHandler(w http.ResponseWriter, r *http.Request) {
  fmt.Println("GET params were:", r.URL.Query())

  // if only one expected
  param1 := r.URL.Query().Get("param1")
  if param1 != "" {
    // ... process it, will be the first (only) if multiple were given
    // note: if they pass in like ?param1=&param2= param1 will also be "" :|
  }

  // if multiples possible, or to process empty values like param1 in
  // ?param1=&param2=something
  param1s := r.URL.Query()["param1"]
  if len(param1s) > 0 {
    // ... process them ... or you could just iterate over them without a check
    // this way you can also tell if they passed in the parameter as the empty string
    // it will be an element of the array that is the empty string
  }    
}

还要注意“值映射中的键[即Query()返回值]区分大小写。”

充高扬
2023-03-14

根据定义,查询字符串位于URL中。您可以使用req访问请求的URL。URL(doc)。URL对象有一个Query()。

如果您要查找的是HTML表单提交的POST数据,那么这(通常)是请求正文中的一个键值对。您的答案是正确的,您可以调用ParseForm(),然后使用req。Form字段以获取键值对的映射,但也可以调用FormValue(key)以获取特定键的值。如果需要,它将调用ParseForm(),并获取值,而不管它们是如何发送的(即在查询字符串中或在请求正文中)。

 类似资料:
  • 问题内容: 我正在使用Go中的程序包来处理POST请求。如何访问和解析对象中查询字符串的内容?我从官方文档中找不到答案。 问题答案: 根据定义,QueryString 位于URL中。您可以使用(doc)访问请求的URL 。URL对象具有一个返回类型的方法(doc),该类型只是QueryString参数的一个。 如果您要查找的是HTML表单提交的POST数据,那么(通常)这是请求正文中的键/值对。您

  • 我用Go编写了一个简单的服务器: 以及一个用Python编写的用于测试的简单客户端。以下是代码: 每次客户端访问服务器时,服务器都会产生这个错误: 我知道如何在Go中处理JSON Post请求 Python版本==3.4 Go版本==1.7 先谢谢你。

  • 我使用Laravel 8。用户点击一个包含id的链接#()我的应用程序从浏览器收到一个$请求,并通过我的问题是如何将id#输入php变量?

  • 我正在使用GWT和Spring controller来管理http流量。有些请求可能需要很长时间,但我希望在超过给定时间时终止请求。 我如何配置超时Spring。我也使用Apache Tomcat 7.0。我试图在tomcat上inrease最大线程,但有一段时间tomcat工作缓慢,因为请求线程不会死。

  • 我用Ktor构建了一个Web服务器,并想缓存API方法结果。但是我不知道如何从下面call.response.代码中获取响应正文 如果我无法获得响应体,还有其他解决方案可以在Ktor中缓存API方法的结果吗?

  • 为什么它不起作用? 返回java.net中的错误=