# 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)
```
- 庫
- package achive
- package tar
- package zip
- package bufio
- package builtin
- package bytes
- package compress
- package bzip2
- package flate
- package gzip
- package lzw
- package zlib
- package container
- package heap
- package list
- package ring
- package crypto
- package aes
- package cipher
- package des
- package dsa
- package ecdsa
- package elliptic
- package hmac
- package md5
- package rand
- package rc4
- package rsa
- package sha1
- package sha256
- package sha512
- package subtle
- package tls
- package x509
- package pkix
- package database
- package sql
- package driver
- package encoding
- package ascii85
- package asn1
- package base32
- package base64
- package binary
- package csv
- package gob
- package hex
- package json
- package pem
- package xml
- package errors
- package expvar
- package flag
- package fmt
- package go
- package doc
- package format
- package parser
- package printer
- package hash
- package adler32
- package crc32
- package crc64
- package fnv
- package html
- package template
- package image
- package color
- package palette
- package draw
- package gif
- package jpeg
- package png
- package index
- package suffixarray
- package io
- package ioutil
- package log
- package syslog
- package math
- package big
- package cmplx
- package rand
- package mime
- package multipart
- package net
- package http
- package cgi
- package cookiejar
- package fcgi
- package httptest
- package httputil
- package pprof
- package mail
- package rpc
- package jsonrpc
- package smtp
- package textproto
- package url
- package os
- package exec
- package signal
- package user
- package path
- package filepath
- package reflect
- package regexp
- package runtime
- package cgo
- package debug
- package pprof
- package race
- package sort
- package strconv
- package strings
- package sync
- package atomic
- package text
- package scanner
- package tabwriter
- package template
- package time
- package unicode
- package utf16
- package utf8
- package unsafe