go语言net包里面的PostForm

net包里面的http包里定义了Request结构体,用于http的请求,
type Request
type Request struct {
// Method指定HTTP方法(GET、POST、PUT等)。对客户端,““代表GET。
Method string
// URL在服务端表示被请求的URI,在客户端表示要访问的URL。
//
// 在服务端,URL字段是解析请求行的URI(保存在RequestURI字段)得到的,
// 对大多数请求来说,除了Path和RawQuery之外的字段都是空字符串。
// (参见RFC 2616, Section 5.1.2)
//
// 在客户端,URL的Host字段指定了要连接的服务器,
// 而Request的Host字段(可选地)指定要发送的HTTP请求的Host头的值。
URL *url.URL
// 接收到的请求的协议版本。本包生产的Request总是使用HTTP/1.1
Proto string // “HTTP/1.0”
ProtoMajor int // 1
ProtoMinor int // 0
// Header字段用来表示HTTP请求的头域。如果头域(多行键值对格式)为:
// accept-encoding: gzip, deflate
// Accept-Language: en-us
// Connection: keep-alive
// 则:
// Header = map[string][]string{
// “Accept-Encoding”: {“gzip, deflate”},
// “Accept-Language”: {“en-us”},
// “Connection”: {“keep-alive”},
// }
// HTTP规定头域的键名(头名)是大小写敏感的,请求的解析器通过规范化头域的键名来实现这点。
// 在客户端的请求,可能会被自动添加或重写Header中的特定的头,参见Request.Write方法。
Header Header
// Body是请求的主体。
//
// 在客户端,如果Body是nil表示该请求没有主体买入GET请求。
// Client的Transport字段会负责调用Body的Close方法。
//
// 在服务端,Body字段总是非nil的;但在没有主体时,读取Body会立刻返回EOF。
// Server会关闭请求的主体,ServeHTTP处理器不需要关闭Body字段。
Body io.ReadCloser
// ContentLength记录相关内容的长度。
// 如果为-1,表示长度未知,如果>=0,表示可以从Body字段读取ContentLength字节数据。
// 在客户端,如果Body非nil而该字段为0,表示不知道Body的长度。
ContentLength int64
// TransferEncoding按从最外到最里的顺序列出传输编码,空切片表示"identity"编码。
// 本字段一般会被忽略。当发送或接受请求时,会自动添加或移除"chunked"传输编码。
TransferEncoding []string
// Close在服务端指定是否在回复请求后关闭连接,在客户端指定是否在发送请求后关闭连接。
Close bool
// 在服务端,Host指定URL会在其上寻找资源的主机。
// 根据RFC 2616,该值可以是Host头的值,或者URL自身提供的主机名。
// Host的格式可以是"host:port”。
//
// 在客户端,请求的Host字段(可选地)用来重写请求的Host头。
// 如过该字段为”",Request.Write方法会使用URL字段的Host。
Host string
// Form是解析好的表单数据,包括URL字段的query参数和POST或PUT的表单数据。
// 本字段只有在调用ParseForm后才有效。在客户端,会忽略请求中的本字段而使用Body替代。
Form url.Values
// PostForm是解析好的POST或PUT的表单数据。
// 本字段只有在调用ParseForm后才有效。在客户端,会忽略请求中的本字段而使用Body替代。
PostForm url.Values
// MultipartForm是解析好的多部件表单,包括上传的文件。
// 本字段只有在调用ParseMultipartForm后才有效。
// 在客户端,会忽略请求中的本字段而使用Body替代。
MultipartForm *multipart.Form
// Trailer指定了会在请求主体之后发送的额外的头域。
//
// 在服务端,Trailer字段必须初始化为只有trailer键,所有键都对应nil值。
// (客户端会声明哪些trailer会发送)
// 在处理器从Body读取时,不能使用本字段。
// 在从Body的读取返回EOF后,Trailer字段会被更新完毕并包含非nil的值。
// (如果客户端发送了这些键值对),此时才可以访问本字段。
//
// 在客户端,Trail必须初始化为一个包含将要发送的键值对的映射。(值可以是nil或其终值)
// ContentLength字段必须是0或-1,以启用"chunked"传输编码发送请求。
// 在开始发送请求后,Trailer可以在读取请求主体期间被修改,
// 一旦请求主体返回EOF,调用者就不可再修改Trailer。
//
// 很少有HTTP客户端、服务端或代理支持HTTP trailer。
Trailer Header
// RemoteAddr允许HTTP服务器和其他软件记录该请求的来源地址,一般用于日志。
// 本字段不是ReadRequest函数填写的,也没有定义格式。
// 本包的HTTP服务器会在调用处理器之前设置RemoteAddr为"IP:port"格式的地址。
// 客户端会忽略请求中的RemoteAddr字段。
RemoteAddr string
// RequestURI是被客户端发送到服务端的请求的请求行中未修改的请求URI
// (参见RFC 2616, Section 5.1)
// 一般应使用URI字段,在客户端设置请求的本字段会导致错误。
RequestURI string
// TLS字段允许HTTP服务器和其他软件记录接收到该请求的TLS连接的信息
// 本字段不是ReadRequest函数填写的。
// 对启用了TLS的连接,本包的HTTP服务器会在调用处理器之前设置TLS字段,否则将设TLS为nil。
// 客户端会忽略请求中的TLS字段。
TLS *tls.ConnectionState
}
其中,
// PostForm是解析好的POST或PUT的表单数据。
// 本字段只有在调用ParseForm后才有效。在客户端,会忽略请求中的本字段而使用Body替代。
PostForm url.Values
PostForm字段是比较常用来解析请求参数的字段,它里面直接是解析好的POST或PUT表单数据,类型为 url.Values,定义如下:
type Values
type Values map[string][]string

一个PostForm的示例如下:
PostForm: map[distance:[7587] djCityId:[131] djV:[7.8.0] endAddr:[北京市昌平区龙禧苑云趣园二区] endCityId:[131] endLat:[4851213] endLng:[12950791] endName:[云趣园-二区] sign:[86a81f65253b435f3ee71695ba202fc5] startAddr:[百度大厦] startCityId:[131] startLat:[4846572] startLng:[12947473] startName:[百度大厦] time:[988]]

相关推荐

  1. go语言net里面PostForm

    2024-04-20 14:22:04       37 阅读
  2. Curl- go自带 net/http实现

    2024-04-20 14:22:04       60 阅读
  3. Go语言bufio使用

    2024-04-20 14:22:04       53 阅读
  4. GO语言基础笔记(五):介绍

    2024-04-20 14:22:04       56 阅读
  5. go语言学习-管理

    2024-04-20 14:22:04       65 阅读
  6. go语言进阶

    2024-04-20 14:22:04       28 阅读
  7. Go语言GC

    2024-04-20 14:22:04       56 阅读
  8. Go 1.22 对 net/http 路由增强功能详解

    2024-04-20 14:22:04       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-20 14:22:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-20 14:22:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-20 14:22:04       87 阅读
  4. Python语言-面向对象

    2024-04-20 14:22:04       96 阅读

热门阅读

  1. 解决方案:Pandas如何多条件筛选数据

    2024-04-20 14:22:04       41 阅读
  2. 通俗易懂降维理解------SIFT【大白话版】!!!

    2024-04-20 14:22:04       40 阅读
  3. SpringBoot项目中整合MinIO

    2024-04-20 14:22:04       37 阅读
  4. 负载均衡原理及算法

    2024-04-20 14:22:04       36 阅读
  5. CSP初赛知识精讲--图像存储

    2024-04-20 14:22:04       40 阅读
  6. STM32出现I2C通信问题如何解决

    2024-04-20 14:22:04       33 阅读
  7. 美团20240420春招第七场笔试【硬件开发方向】

    2024-04-20 14:22:04       39 阅读
  8. 甲辰年半日闲有得

    2024-04-20 14:22:04       33 阅读
  9. 前端的未来已然到来

    2024-04-20 14:22:04       40 阅读