多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# package cgi `import "net/http/cgi"` cgi包实现了CGI(Common Gateway Interface,公共网关协议),参见[RFC 3875](http://tools.ietf.org/html/rfc3875)。 注意使用CGI意味着对每一个请求开始一个新的进程,这显然要比使用长期运行的服务程序要低效。本包主要是为了兼容现有的系统。 ## Index * [func Request() (\*http.Request, error)](#Request) * [func RequestFromMap(params map[string]string) (\*http.Request, error)](#RequestFromMap) * [func Serve(handler http.Handler) error](#Serve) * [type Handler](#Handler) * [func (h \*Handler) ServeHTTP(rw http.ResponseWriter, req \*http.Request)](#Handler.ServeHTTP) ## func [Request](http://code.google.com/p/go/source/browse/src/pkg/net/http/cgi/child.go?name=release#29 "View Source") ``` func Request() (*http.Request, error) ``` 返回一个当前环境下的HTTP请求。它假设当前程序执行在CGI环境下,成功返回的Request的Body是可读取数据的。(如果必要) ## func [RequestFromMap](http://code.google.com/p/go/source/browse/src/pkg/net/http/cgi/child.go?name=release#52 "View Source") ``` func RequestFromMap(params map[string]string) (*http.Request, error) ``` 使用CGI变量集params创建一个HTTP请求。返回的Request的Body是没有数据的。 ## func [Serve](http://code.google.com/p/go/source/browse/src/pkg/net/http/cgi/child.go?name=release#146 "View Source") ``` func Serve(handler http.Handler) error ``` 在当前活跃CGI环境下执行handler;如当前无CGI环境,会返回错误。handler为nil时将使用http.DefaultServeMux。 ## type [Handler](http://code.google.com/p/go/source/browse/src/pkg/net/http/cgi/host.go?name=release#46 "View Source") ``` type Handler struct { Path string // CGI可执行文件的路径 Root string // handler的根URI前缀,""代表"/" // Dir指定CGI程序的工作目录。 // 如果Dir为""则使用Path的基目录;如果Path没有基目录则使用当前工作目录。 Dir string Env []string // 额外设置的环境变量(如果有),格式为"key=value" InheritEnv []string // 从host继承的环境变量,只有"key" Logger *log.Logger // 可选的logger接口切片,如为nil则使用log.Print Args []string // 可选的传递给子进程的参数 // 当CGI进程返回一个Location头,且其值以"/"开始时, // 本字段指定处理内部重定向的根部HTTP Handler。参见RFC 3875 § 6.3.2。 // 一般会使用http.DefaultServeMux。 // 如果为nil,返回一个本地URI路径的CGI回复会发送给客户端,不进行内部跳转。 PathLocationHandler http.Handler } ``` Handler在子进程中执行具有一个CGI环境的可执行程序。 ### func (\*Handler) [ServeHTTP](http://code.google.com/p/go/source/browse/src/pkg/net/http/cgi/host.go?name=release#97 "View Source") ``` func (h *Handler) ServeHTTP(rw http.ResponseWriter, req *http.Request) ```